首页 > 代码库 > 正则表达式
正则表达式
在模式匹配( 即 将设定的“字符串模式” 与 “字符串”进行匹配)中,我们使用正则表达式来描述一个“字符串模式”。
正则表达式是一个非常强大的存在,被非常广泛的应用着。在vi的模式查找与替换命令中、more、grep、awk、expr等用于处理文本数据的命令中,都可以使用正则表达式来描述“模式”
比如,用grep筛选文件hello.c中的带有数字的行:grep ‘[0-9][0-9]*‘ hello.c
1.正则表达式中的 特殊字符有6个,分别为:
. * [ \ ^ $
除这6个特殊字符以外,其它字符与自身匹配。
特殊字符含义:
. : 点字符可以匹配任意单字符;
* : *字符表示该*字符前面的 单字符正则表达式 出现了任意多次(包括0次);
(模式a b*将匹配字符串“a ”或由一个a后接一个空格和一至多个b的字符串;模式[0-9]* 将匹配 空字符串 或 出现多次的数字字符串)
[ : 表示单字符的集合,与“]”配合使用,中间为集合内容;
(模式[xyz]将与x 、y、z中任意一个字符匹配)
同时,"[]"中的内容中,有时可以使用“-”进行区间表示。
(模式[a-m] 则表示字符a到字符m间的任意一个字符,[0-9] 则表示字符0到字符9间的任意一个数字,[a-z0-9] 将匹配a到z或0到9中的任意字符,但“-”必须在连续的字符中间出现才有此作用,[01-] 则只能表示 0、1、- 这三个字符;)
另外,正则表达式中的特殊字符出现在集合[]中时,只代表自身,而无特殊含义(除^与$分别在模式首部和尾部时外)。
(模式[*.]将匹配字符“*” 或 字符“.”)
^ : 行首符,出现在模式首部时,匹配行首的“^”符号后的模式表示的字符串,当“^”出现在集合开头时表示补集,其余只与自身匹配。
(模式[^0-9]将匹配非数字的字符串;模式^abc将匹配行首的字符串“abc”)
\ : 转义字符,用于特殊字符前,使特殊字符失去特殊含义而只表示本身。
(模式\.只与“.”进行匹配;模式\\只与 “\”进行匹配 )
$ : 行尾符,出现在模式尾部时,匹配行尾的“$”符号前的模式表示的字符串,其余只与自身匹配。
(模式123$匹配行尾的字符串“123”;模式$123将匹配字符串“$123”)
有一点一定要注意:文件通配符中也有类似的特殊符号表示特殊含义(如,?表示任意单个字符,*表示任意多个字符)但要明确区分 正则表达式的特殊符号规则 与 文件名匹配中的特殊符号规则是不一样的。通常,正则表达式用于文本处理,而文件名匹配用于文件处理。文件名通配符是shell中元字符(有特殊含义的字符)的一部分。
正则表达式