linux中 正则表达式和通配符的区别

linux中 正则表达式和通配符的区别,第1张

通配符

它是由shell解析,并且一般用于匹配文件名,实际上就是shell解释器去解析的特殊符号,linux系统通配符有几下几种:

*:匹配任意多个字符

?:匹配任意一个字符

[...]:匹配中括号内出现的任意一个字符

[!...]:不匹配中括号内出现的任意一个字符

一般出现在要shell命令或脚本中,匹配特定的文件名

正则表达式

它是一个字符匹配标准,一些命令工具按此标准实现字符匹配,根据命令支持的匹配功能可分为基础正则表达式和扩展正则表达式,常用于支持正则表达式的工具,如sed,grep,awk...

有如下一些常用的匹配元字符:

字符匹配

.:匹配任意单个字符

*:匹配其前面一个字符出现任意次

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

+:匹配其前面一个字符出现至少一次(在扩展正则表达式中)

位置匹配

^:锚定行首

$:锚定行尾

\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现

\>或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现

\B:非单词的开头或结尾

^$:空白行

分组() :

(ab)* : 匹配ab这个分组出现任意次

\1:引用第一个左括号以及与之对应的右括号所包括的所有内容,同理还有\2,\3

特殊子字符类:

[:alnum:] :任何字母和数字

[:alpha:] :任何字母

[:cntrl:] :控制字符. 在ASCII表中对应八进制000 到 037, 和177 ('DEL').

[:digit:] :任何数字

[:graph:] :匹配打印字符,相当于'[:alnum:]' +'[:punct:]'.

[:lower:] :小写字母

[:print:] :可打印字符,相当于 '[:alnum:]', '[:punct:]', 和space.

[:punct:] 标点符号,'! " # $ % &' ( ) * + , - . / : <= >? @ [ \ ] ^ _ ' { | } ~'

[:space:] 空白字符,tab, newline, vertical tab, form feed, carriage return, and space.

[:upper:] 大写字母

[:xdigit:] 任何16进制的数字,相当于[0-9a-fA-F]

所以:^[[:space:]]*$ :匹配没有任何内容的行

需要注意:[]中的特殊字符如.已经失去了其特殊含义,和方括号中的普通字符[abc]一样。

1、正则表达式和通配符有点像。区别在于通配符匹配的是文件名和目录名中的字符串,不能匹配文本中内容的字符串。而正则表达式匹配的是文本中的字符串。

2、正则表达式(REGEXP):由一类特殊字符及文本符号所编写的表达式,这种表达式的功能是匹配文本当中字符串。

3、正则表达式的特点:可以通过特殊字符及文本符号灵活组合各种过滤条件去匹配文本内容,从而达到自由度颇高的筛查方式。

4、正则表达式分两类:基本正则表达式(BRE)、扩展正则表达式(ERE),grep 加上 -E 参数就是使用 egrep。

5、元字符分类:元字符是指正则表达式中使用的特殊字符,这些特殊符号具有特定的功能。从功能上分类有:字符匹配、匹配次数、位置锚定、分组。

①、 .:匹配任意单个字符。

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

③、 [^]:排除匹配指定范围内的任意单个字符。

④、 [:alnum:]:过滤字母和数字,包含了大写字母、小写字母 和 10个数字(0-9)。

⑤、 [:alpha:]:任何英文大小写字符,即 A-Z,a-z。

⑥、 [:lower:]:只过滤小写字母。

⑦、 [:upper:]:只过滤大写字母。

⑧、 [:blank:]:空白字符(空格和制表符)。

⑨、 [:space:]:水平和垂直的空白字符(比 [:blank:] 包含的范围广)。

⑩-①、 [:digit:]:十进制数字。

⑩-③、 [:graph:]:可打印的非空白字符。

⑩-④、 [:print:]:可打印字符。相当于 [:alnum:]、[:punct:] 和 space。

⑩-⑤、 [:punct:]:标点符号。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/6236547.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-18
下一篇 2023-03-18

发表评论

登录后才能评论

评论列表(0条)

保存