通配符和正则表达式

前端之家收集整理的这篇文章主要介绍了通配符和正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1通配

通配符叫做文件通配符更能突出其作用范围,因为通配符主要用于文件名的通配,可以在shell命令中使用,常用的通配符有以下几个:

* :星号用来匹配任意长度任意字符。

? :问号用来匹配任意单个字符

[^] :匹配指定范围之外的任意单个字符。如

[^a-z] = [^[:lower:]] 匹配小写字母a-z之外的任意单个字符

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

[A-Za-z] 匹配大小写字母中的任意单个字符(实验时使用[a-z]或者[A-Z]或者 [A-Za-z]效果等同,都是大小写全匹配,此处值得验证)

[0-9] 匹配09之间的数字

例:如何匹配空白字符?【使用[' ']或使用[[:space:]],单引号中间有空格】

[[:alpha:]] 相当于[A-Za-z]

[[:digit:]] 相当于[0-9]

[[:lower:]] 相当于[a-z]

[[:upper:]] 相当于[A-Z]

[[:alnum:]] 相当于[A-Za-z0-9]

[[:space:]] 相当于空白字符

注意:上面几个需要使用双重中括号,否则匹配不成功,如下面的例子

[root@localhost ~]# ls
anaconda-ks.cfg install.loginstall.log.syslog
[root@localhost ~]# ls ins[[:lower:]]a*
install.log install.log.syslog
[root@localhost ~]# ls ins[:lower:]a*
ls: ins[:lower:]a*: No such file or directory

正则表达式

正则表达式(REGEXP)又分为基本正则表达式和扩展正则表达式。正则表达式和通配符不同,正则表达式是用来匹配字符串的。

2、基本正则表达式

元字符

. :点用来匹配任意单个字符

匹配次数

* :星号用来匹配其前面的字符任意次

.* :点星号用来匹配任意字符任意次

默认情况下正则表达式工作于贪婪的模式下(即尽可能长的匹配)

\? :匹配其前面的字符1次或0次

\{m,n\} :匹配其前面的字符至少m次,至多n次。

上面两个\反斜线可以理解为是用作转义字符的。

位置锚定

行锚定:

^ :用来锚定行首,此字符后面的内容必须在行首

$ :锚定行尾,此字符前面的内容必须出现在行尾

^$ :空白行

单词锚定:

\< 或者使用\b:锚定词首

\>或者使用\b:锚定词尾

例:

如何匹配出现在行尾的root,并忽略root标点符号的行(root[[:punct:]]*$
如何匹配出现在行首的root,并忽略root前空格的行?(^[[:space:]]*root

范围匹配

[] :匹配指定范围内的任意单个字符。如[a-z] [A-Z] [0-9]。和通配符中的一 样,但此处区分大小写,即使用[a-z]或者[A-Z]或者[A-Za-z]效果不相同。

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

字符集合:(字符集合使用时都要使用双重中括号)

wKioL1cpmt6h-VJOAAFFGv7Qrok133.png

分组匹配

\(\):例如 \(abc\)* 表示abc作为一个整体可以出现任意次

后向引用(和分组匹配一起使用):

\1 引用第一个左括号以及与之对应的右括号包含的所有内容

\2 引用第二个左括号以及与之对应的右括号包含的所有内容

依次类推

3、扩展正则表达式

元字符

和基本正则表达式一样

匹配次数

+ 加号相当于基本正则表达式中的\{1,\} :匹配其前面的字符至少一次。

基本正则表达式的\{m,n\}在扩展表达式中不再需要使用反斜线。

其他的和基本正则表达式中的一样

位置锚定

和基本正则表达式一样

范围匹配

和基本正则表达式一样

字符集合

和基本正则表达式一样

分组匹配

基本正则表达式的\(\) 在扩展表达式中不再需要使用反斜线。

后向引用

和基本正则表达式一样

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