首页 > 代码库 > 正则表达式

正则表达式

在模式匹配( 即 将设定的“字符串模式” 与 “字符串”进行匹配)中,我们使用正则表达式来描述一个“字符串模式”。

正则表达式是一个非常强大的存在,被非常广泛的应用着。在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中元字符(有特殊含义的字符)的一部分。

正则表达式