加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 22:41:14 所属栏目:百科 来源:网络整理
导读:文件名通配(globbing): glob 特殊字符,元字符,不表示字符的表面意义,而是能匹配符合指定特征的字符串。 * 任意长度的任意字符,可以为空。 ? 任意单个字符,不能为空。 [] 匹配指定范围内的任意单个字符。 例如: [a-z] [A-Z] [0-9] [a-z0-9] [:alpha:]

文件名通配(globbing):


glob 特殊字符,元字符,不表示字符的表面意义,而是能匹配符合指定特征的字符串。


* 任意长度的任意字符,可以为空。


? 任意单个字符,不能为空。


[] 匹配指定范围内的任意单个字符。

例如:

[a-z]

[A-Z]

[0-9]

[a-z0-9]

[:alpha:] 所有大小写字母

[:digit:] 所有数字

[:space:] 空白,包含空格和制表符等等。

[:lower:] 所有小写字母

[:upper:] 所有大写字母

[:alnmu:] 所有大小写字母和数字

[:punct:] 所有的标点符号

[:print:] 所有能打印显示出来的字符

[:blank:] 空格和制表符。


[^] 取反,指定范围之外的任意单个字符。

例如:

[^a-z]=[^[:lower:]] 表示除小写字符以外的任意单个字符。


REGular EXPeression (REGXP):正则表达式。

字符(元字符 PATTERN)体现通配的含义,而不是本身的含义。


Basic REGXP:基本正则表达式。

Extended REGXP:扩展正则表达式。



grep:Global Regular Experssion Printing.

全局搜索正则表达式。使用基本正则表达式。

文本过滤工具,能够实现根据指定模式(PATTERN),逐行搜索文件内容,并将匹配到的行显示出来。


#grep [OPTION] ... 'PATTERN' FILES

-v 反向取值,显示不匹配的内容。


--color=COLOR 将匹配项用某种颜色COLOR显示。默认不赋值则为auto,红色。


-i 做模式匹配的时候不区分字符 大小写。


-o 只显示匹配到的字符串本身。每一个串显示为一行。


-A NUM 显示匹配行后NUM行的内容。


-B NUM 显示匹配行前NUM行的内容。


-C NUM 显示匹配行前后NUM行的内容。上下文。


-E 使用扩展的正则表达式。


例如:

#grep 'cpu' /proc/cpuinfo 显示/proc/cpuinfo中包含cpu的条目。

#ifconfg |grep 'inte addr' |cut -d: -f2|cut -d ' ' -f1 显示ifconfig中网卡的ip地址。



egrep [OPTION] 'PATTERN' FLIES

扩展正则表达式




PATTERN(元字符):

文本字符和正则表达式的元字符组成的匹配条件。


基本正则表达式元字符:


字符匹配:

1.. 匹配任意单个字符。

例如:

# grep 'c.u' /proc/cpuinfo 匹配文件中包含c.u的内容。

cpu cpu这个符合条件。


2.[] 匹配指定范围内的任意单个字符。

例如:

[a-z]

[A-Z]

[0-9]

[a-z0-9]


# grep 'c..u [a-z]' /proc/info 匹配文件中包含c..u 同时后边有小写字母的内容。


3.[^] 匹配指定范围外的任意单个字符


4..* 匹配任意长度的任意字符。

例如:

a.*b 匹配以a开头,以b结尾,中间任意长度任意字符。

5.文件名通配中常见的元字符。


[:alpha:] 所有大小写字母

[:digit:] 所有数字

[:space:] 空白,包含空格和制表符等等。

[:lower:] 所有小写字母

[:upper:] 所有大写字母

[:alnmu:] 所有大小写字母和数字

[:punct:] 所有的标点符号

[:print:] 所有能打印显示出来的字符

[:blank:] 空格和制表符


例如:

#grep '[[:space:]][[:digit:]]$' /etc/inittab 匹配以数字结尾,数字前有空白字符的行。





次数匹配:

工作在贪婪模式下,能匹配多长匹配多长。整体内容可能不匹配,但是会匹配其中符合条件的部分内容。


1.* 次数匹配,匹配其前的字符0次,1次或者多次。

例如:

ab*c匹配abc abbc ac abdc,其中abdc不符合。


2.? 次数匹配,匹配其前的字符0次,1次。

例如:

ab?c 匹配ac abc adc 其中adc不匹配。


3.{m,n} 精确匹配,最少m次,最多n次。

{m,} 至少m次

{0,n} 至多n次

{m} 精确m次


例如:

a[a-z]{0,2}c 匹配aAc aaaac aaaac 其中都不匹配。


a.{1,3}b 匹配已a开头,b结尾,中间任意1-3个字符,最少1个字符,最多3个字符。


位置锚定

单词锚定

&; 或 b 锚定词首。其后边的任意字符必须作为单词首部出现。


&; 或 b 锚定词尾。其前边的任意字符必须作为单词尾部出现。


例如:

#grep '&;root&;' /etc/passwd 在/etc/passwd文件中匹配root这个单词。


#grep 'brootb' /etc/passwd





行锚定

^ 行首锚定。此字符后边的任意内容必须出现在行首。


$ 行尾锚定。此字符前边的任意内容必须出现在行位。


^$ 空白行。



例如;

&;r..t 匹配root chroot rooter ,其中chroot不匹配。


r..t&; 匹配root chroot rooter ,其中rooter不匹配。


^r..t 匹配root chroot rooter ,其中chroot不匹配。


r..t$ 匹配root chroot rooter ,其中rooter不匹配。


root[[:pounct:]]{0,1} 匹配以root为结尾的行。


分组

(PATTERN) 分组字符:

例如:

x(ab)*y 匹配以ab成组出现的字符。


向后引用:

(PATTERN)1 引用前面匹配到的内容。


(PATTERN1(PATTERN2))12 多括号之间匹配是依照从左至右的括号来匹配的。


1 匹配PATTERN1

2 匹配PATTERN2.


例如:

he love his lover.

she like her liker.

he love is liker.

she like her lover.


匹配前后单词相同的行,使用(l..e).*1r匹配。着这样第1、2行是符合匹配的。


扩展的正则表达式元字符:

部分和基本正则表达式元字符相同。

字符匹配:

.

[]

[^]


次数匹配:

*

?

+ 匹配其前的字符至少1次,等同于{0,1}

{m,n} 至少m次,至多n次。


#ifconfig | egrep --color ‘&;([0-9]|[0-9][0-9]|1[0-9][0-9]|25[0-5])&;.{3}&;([0-9]|[0-9][0-9]|1[0-9][0-9]|25[0-5])&;’


列出ifconfig命令中0-255的数字。


锚定:


或者:

|

PATTERN1|PATTERN2

例如:C|cat 匹配的是C或者是cat。


分组

(PATTERN1(PATTERN2))12


egrep = grep -E

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读