正则表达式

     本人认为, 如果你在五分钟之前才知道什么是正则表达式, 那么在接下来的几分钟内, 你也无法应用它解决你的问题. 
 
匹配优先量词: 尽可能尝试匹配
  ?             匹配一个或不匹配
  +            匹配至少一个
  *             匹配任意多个或不匹配
{min, max}       匹配 min ~ max 次
忽略优先量词: 尽可能尝试匹配, 一旦匹配可以成功, 立即结束匹配
  ??           不匹配或者匹配一个
  +?            匹配至少一个
  *?           不匹配或者匹配任意多个
{min, max}       匹配 min ~ max 次 
占有优先量词: 尽可能尝试匹配, 一旦匹配, 就不能回退. 也就是不保存备用状态. 其行为类似于匹配优先和固化分组的结合.
  ?+            匹配一个或不匹配
  ++           匹配至少一个
  *+            匹配任意多个或不匹配
{min, max}+      匹配 min ~ max 次      
(My Note: 深入理解贪婪量词和惰性量词, 请参阅<精通正则表达式>中文第三版 p.160 ~ 161) 
( ... )            捕获分隔
(: ... )           非捕获分隔
(:<name>)        命名捕获, 在 Perl 5.xxx 中不受支持
(?<= ... )        肯定逆序环视
(?= ... )         肯定顺序环视

(?<! ... )        否定逆序环视
(?! ... )          否定顺序环视 
(?> ... )         固化分组
(?modifier)     模式修饰符开始
(?-modifier)    模式修饰符结束
(?(condition)true|false)    条件判断: 可以匹配则返回 true 部分, 否则返回 false 部分
(?# ... )    注释
常用的元字符: (引用: http://deerchao.net/tutorials/regex/regex.htm)
代码说明
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束

代码/语法说明
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
选项:
  /i      忽视大小写

  /x      松散结构模式
  /s     .(点号) 可以匹配 \n
  /m    ^(托字符) 可以匹配 \n 之前的位置
          $(美元符) 可以匹配 \n 之后的位置
  /g     从上次匹配结束的地方开始迭代

 

附一个在线检测工具: http://gskinner.com/RegExr/

posted @ 2011-08-13 20:37  walfud  阅读(231)  评论(0编辑  收藏  举报