正则表达式

来源:互联网 发布:直接翻译软件界面 编辑:程序博客网 时间:2024/06/05 16:20

在讲正则表达式前先了解一个概念——元字符(Metacharacters),元字符是用来阐述字符表达式意义的字符。简言之,元字符就是描述字符的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。

那么,正则表达式即是由一串字符和元字符构成的字符串,简称RE(Regular Expression)。正则表达式的主要功能是文本查询和字符串操作,它可以匹配文本的一个字符或字符集合。

使用正则表达式的一些Shell工具如sedawkgrepuniq等,都可看作是数据过滤器,将不满足正则表达式定义的数据拒绝掉,剩下与正则表达式匹配的数据。

正则表达式的基本元素包括普通字符和元字符,其中元字符有*^$[]等,Shell赋予了这些字符超越字面意思的意义。因此我们的主要目的是掌握正则表达式中元字符的意义,能熟练运用正则表达式构建一个“规则字符串”,用于表达一种对字符串的过滤逻辑。下面简单介绍一些元字符的意义和用法。

1、“*”符号——用于匹配前面一个普通字符的0此或多次重复。

2、“.”符号——用于匹配任意一个字符

3、“^”符号——用于匹配行首,表示行首的字符就是“^”字符后面的那个字符。

4、“$”符号——用于匹配行尾,放在匹配字符之后,与“^”的功能和用法相反。

5、“[]”方括号——用于匹配字符集合,支持穷举法列出字符集合的所有元素,也支持使用“-”符号表示字符集合的范围,例如[012345][a-z]

注意:“^”放在“[]”外面表示匹配行首,但放在“[]”里面则表示取反,如[^b-d]表示匹配除bcd外的字符。

6、“\”符号——为转义符,用于屏蔽一个元字符的特殊意义。

7、“\<\>”符号——用于精确匹配,利用“\”符号屏蔽“<>”符号。

8、“\{\}”系列符号——用于表示前一个字符的重复,与“*”类似,但“\{\}”可以指定重复次数,如[0-9]\{3\}表示匹配3个十进制数字。该符号包括三种形式:

\{n\}:匹配前面字符n

\{n,\}:匹配前面字符至少n

\{n,m\}:匹配前面字符n~m

除了上述的元字符外,awk等工具还支持一些扩展的元字符,包括:

?”符号——用于匹配0个或1个前面的字符。

+”符号——用于匹配1个或多个前面的字符。

()”——表示一个字符集合或用于expr中。

|”——表示“或”,用于匹配一组可选的字符。

我们需要明白bash本身不支持正则表达式,使用正则表达式的是Shell命令和工具,但是bash Shell可以使用正则表达式中的一些元字符实现通配功能。常用的通配符包括正则表达式元字符:?*[]{}^等,可是这些元字符在通配中的意义与正则表达式中的意义不完全一致 T_T

例如:“*”符号表示任意位的任意字符;“?”符号表示一个任意字符;“^”符号表示取反;“[]”符号的意义与正则表达式一样;“{}”符号表示一组表达式的集合,值得注意的是,{}符号内的表达式是“或”的关系,例如ls {*.awk,*.sed} 的作用是列出当前目录下以.awk .sed结尾的文件。

 

0 0
原创粉丝点击