0
点赞
收藏
分享

微信扫一扫

第四天:跟实践哥学习SHELL之扩展正则表达式

i奇异 06-25 21:00 阅读 9

课程地址: https://edu.51cto.com/course/15965.html

正则表达式种类

普通正则表达式,定了一些基础的符号及其含义

扩展正则表达式,除了基础的符号,又扩展了更多的符号 + ?

基本符号和语法

    点(.): 匹配任意单个字符(除了换行符)。

示例: a.c 可以匹配 "abc" 或 "a2c"。

    星号(*): 表示前面的字符可以出现零次或多次

示例: a* 可以匹配 "" (空字符串)、"a"、"aa" 等。

    加号(+): 表示前面的字符至少出现一次

示例: a+ 只能匹配 "a"、"aa" 等,但不能匹配空字符串。

   问号(?): 表示前面的字符可以出现零次或一次

示例: a? 可以匹配 "" 或 "a"。

    方括号([]): 定义一个字符集,匹配其中的任何一个字符

示例: [abc] 可以匹配 "a"、"b" 或 "c",  [^abc] 排除匹配 "a"或"b" 或 "c"。

    范围(-): 在方括号内使用,定义一个字符范围

示例: [a-z] 可以匹配任何小写字母。

    反斜杠(\): 用于转义特殊字符

示例: \.或\* 用来匹配实际的点或星号。

    分组捕获(()): 将部分表达式组合起来作为一个整体

示例: (ab)+ 匹配 "ab"、"abab" 等。

非捕获分组(?:) / (?!): 类似于分组,但不进行捕获。

示例: (?:ab)+ 同上,但不会捕获 "ab"。

    量词{m,n}: 指定前面的字符出现的次数,m代表最少次数,n代表最多次数。

示例: a{3} 只匹配 "aaa";a{2,4} 匹配 "aa"、"aaa" 或 "aaaa"。

    锚点(^ 和 $): 分别表示字符串的开始结束位置

示例: ^abc 只匹配以 "abc" 开头的字符串;abc$ 只匹配以 "abc" 结尾的字符串。

    选择(|): 匹配前面后面的部分

示例: cat|dog 可以匹配 "cat" 或 "dog"。


示例文本文件19-wangtao.txt

wangtao1 28 hangzhou

wangtao2 30 shenzhen

wangtao3 32 shanghai

zhangsan1 33  hangzhou

zhangsan2 34 foreign

zhangsan3 18 beijing

wangtao.test

shijange888

wangtaowangtao

ABCZ

whoiAm

<body><replaceHost>0</replaceHost><replacePort>0</replacePort><seq>1340517858</seq></body>


grep注意事项

grep默认只支持普通正则,如果使用扩展正则,则需要使用egrep 或 grep -E


扩展正则

? 前面字符出现0次或者1次

+ 前面字符出现1次或者多次

cat 19-wangtao.txt|egrep 'wangtao1?'

[root@k8s-node01 shell]# cat 19-wangtao.txt |egrep 'wangtao1?'

wangtao1 28 hangzhou

wangtao2 30 shenzhen

wangtao3 32 shanghai

wangtao.test

wangtaowangtao

cat 19-wangtao.txt|egrep 'wangtao1+'

[root@k8s-node01 shell]# cat 19-wangtao.txt |egrep 'wangtao1+'

wangtao1 28 hangzhou

{n} 前面字符匹配n次

{a,b} 前面字符匹配a到b次

{,b} 前面字符匹配0次到b次【最多b次】

{a,} 前面字符匹配a或a+次【最少a次】

cat 19-wangtao.txt|egrep 'wangtao1{4}'

cat 19-wangtao.txt|egrep 'wangtao1{1,4}'

cat 19-wangtao.txt|egrep 'wangtao1{4,}'

(wangtao)分组匹配

cat 19-wangtao.txt|egrep '(wangtao){2}'

举报

相关推荐

0 条评论