(转贴)正则表达式学习心得体会(5)

还有什么没提到呢?

  到目前为止,已经提到了许多建立RE的元素,当然还有许多元素没有提到,下表整理了一些没提到的元素,在最左边的字段的数字是说明在Expresso中的例子。

  # 语法 说明

  \a Bell 字符
  \b 通常是指字的边界,在字符组里所代表的就是backspace
  \t Tab

  34 \r Carriage return

  \v Vertical Tab
  \f From feed

  35 \n New line
   \e Escape

  36 \nnn ASCII八位码为nnn的字符

  37 \xnn 十六位码为nn的字符

  38 \unnnn Unicode为nnnn的字符

  39 \cN Control N字符,举例来说Ctrl-M是\cM

  40 \A 字符串的开始(和^相似,但不需籍由multiline选项)

  41 \Z 字符串的结尾
  \z 字符串的结尾

  42 \G 目前查找的开始

  43 \p{name} Unicode 字符组名称为name的字符,比如说\p{Lowercase_Letter} 所指的就是小写字
  (?>exp) Greedy次描述,又称之为non-backtracking次描述。这只符合一次且不采backtracking。

  44 (?<x>-<y>exp)

  or (?-<y>exp) 平衡群组。虽复杂但好用。它让已命名的抓取群组可以在堆栈中操作使用。(小弟对这个也是不太懂哩)

  45 (?im-nsx:exp) 为次描述exp更改RE选项,比如(?-i:Elvis)就是把Elvis大乎略大小写的选项关掉

  46 (?im-nsx) 为之后的群组更改RE选项。
  (?(exp)yes|no) 次描述exp视为zero-width positive lookahead。若此时有符合,则yes次描述为下一个符合标的,若否,则no 次描述为下一个符合标的。
  (?(exp)yes) 和上述相同但无no次描述
  (?(name)yes|no) 若name群组为有效群组名称,则yes次描述为下一个符合标的,若否,则no 次描述为下一个符合标的。

  47 (?(name)yes) 和上述相同但无no次描述

  结论

  经过了一连串的例子,及Expresso的帮忙,相信各位大大对RE有个基本的了解,网络上当然有许多有关于RE的文章,如果各位大大有兴趣http://www.codeproject.com 还有许多关于RE的相关文章。若大大对书有兴趣的话,Jeffrey Friedl的Mastering Regular Expressions很多大大都有推(小弟还没拜读)。希望籍由这样的心得报告,能让对RE有兴趣的大大能缩短学习曲线,当然这是小弟第一次接触RE,若文章中有什么错误或说明的不好的地方,可要请各位大大体谅,并请各位大大将需要修正的地方mail给小弟,小弟会非常感谢各位大大。

posted @ 2007-05-14 16:59  过河卒A  阅读(520)  评论(1编辑  收藏  举报