扩展正则用法小结

前端之家收集整理的这篇文章主要介绍了扩展正则用法小结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

正则表达式: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 '\<ab' reg.txt

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

[root@localhost testdir]# egrep '(l..e).*\1' reg.txt

He love his lover

She like her liker


[root@localhost 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呢?


[root@localhost testdir]# egrep 'C|cat' reg.txt

cat

Cat

C

Chinese


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

可以匹配到:Cat和cat

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

原文链接:https://www.f2er.com/regex/359876.html

猜你在找的正则表达式相关文章