当前位置 : 主页 > 网络编程 > 其它编程 >

扩展正则用法小结

来源:互联网 收集:自由互联 发布时间:2023-07-02
正则表达式regularexpression。缩写成REGEXP是用来匹配文件内容的。通过特点的字符通配文件内容的。扩展正则表达式用 正则表达式regular expression。缩写成REGEXP是用来匹配文件内容的。通过
正则表达式regularexpression。缩写成REGEXP是用来匹配文件内容的。通过特点的字符通配文件内容的。扩展正则表达式用

正则表达式regular expression。缩写成REGEXP是用来匹配文件内容的。通过特点的字符通配文件内容的。

扩展正则表达式用在egrep命令中egrep grep -E

扩展正则表达式的要点有如下几点

1、字符匹配

. 表示任意一个字符

[] : 表示匹配中括号内的任意一个字符

[^] : 表示匹配中括号内除外的任意一个字符。

需要注意的字符集的表示方式

[[:punct:]] 表示匹配标点符号的

[[:space:]] 表示匹配空白字符的

[[:digit:]] 表示匹配数字的

[[:alpha:]] 表示匹配字母的

[[:lower:]] 表示匹配小写字母的

[[:upper:]] 表示匹配大写字母的

[[:dignum:]] 表示匹配数字字母的。

同时匹配是支持取反操作的。[^[::]]

2、关于次数锚定

*表示匹配其前面的字符任意次。包含零次

例子

假如有一个文本的内容如下

a

b

ab

aab

abb

amnb

acdb

amnbmnb

grep a.*b reg.txt #表示匹配包含以a开头以b结束的行

?: 表示匹配其前面的字符一次或零次。注意在扩展正则表达式中不要使用转义符\

{m,n}: 表示匹配其前面的字符至少m次至多n次主要不要使用转义符\

grep a.{1,3}b reg.txt #表示匹配以a开头b结束中间至少有一个至多有三个任意字符的行

表示匹配其前面的字符至少一次。

egrep a.b reg.txt # 表示匹配包含以a开头不结束中间至少有一个字符的行

# 注意在扩展正则表达式中?是不需要\转义符的

\b \< 表示匹配单词首部

grep \

grep \bab reg.txt

都是匹配以ab词组开头的行 

\> \b 表示匹配单词尾部

3、位置锚定

^: 表示锚定行首

$表示锚定行尾

4、分组表示

():对括号内的内容进行分组匹配;\1,\2,\3(可以进行后项【前项】匹配)

假设有一个文本是

He love his lover

She like her lover

He like his lover

She like her liker

需要匹配一行中如果有同时包含两个love或两个like的行

egrep (l..e).*\1 reg.txt

[rootlocalhost testdir]# egrep (l..e).*\1 reg.txt

He love his lover

She like her liker

[rootlocalhost testdir]# egrep l..e.*l..e reg.txt 

He love his lover

She like her lover

He like his lover

She like her liker

需要注意两者的区别用法。什么是后项匹配。

5、扩展正则表达式的或者表示方法

| 对 | 左右两边表示或者。

C|cat 可以匹配的C 和 cat 还是Cat 和 cat呢

[rootlocalhost testdir]# egrep C|cat reg.txt

cat

Cat

C

Chinese

可以使用 egrep (C|c)at reg.txt

可以匹配到Cat和cat

所以| 或的用法是匹配| 两边的字符或者字符串。

转:https://blog.51cto.com/hongyilinux/1703166

网友评论