Anrs Hu

你所知的一切…

PCRE/Python 下的 re 细节(1)

with 2 comments

O’Reillycookbook 系列差不多都是适合摆在手边准备随时查阅的工具书,期间充斥着大量的技术细节。今年七月的时候 rex 同学()还送了这本热腾腾的 Regular Expressions Cookbook 给我,可惜一直没来得及看,想当初甚至还雄心勃勃准备和 rex 一起翻译这本书的,但最后还是由于这样那样的原因导致计划搁浅,我真是愧对 rex 的信任。为了对得起 rex 同学的美貌与智慧,现在我准备花时间读一读,至少每天一个 recipe 嘛,然后把其中一些关于 PCRE 和 Python 的亮点都记录在这里,以飨诸君。:)

不废话,上 Recipe…

希望匹配目标文本中的 $()*+.?[\^{| 这12个符号时,就必须对表达式中的相应字符进行转义,意即表达式应该是这个样子滴:\$\(\)\*\+\.\?\[\\\^\{\|

除了上面 12 个特殊字符外,其余的特殊字符就无需进行转义了。不过,即使在无需进行转义的特殊字符前添加了转义符 \ 也是不会报错的,只是多余的 \ 可能会使表达式变得难以理解。再就是 PCRE 支持 \Q, \E 对,意思是 \Q 和 \E 间的特殊字符会被自动转义,也就是说表达式 \Q$()*+.?[\^{|\E 和第1个表达式是等价的。

除反斜线 \ 和 ] 外, [...] 中的特殊字符也不必手工转义,比较特殊的情况是 ^ 和 – 这两个。当 ^ 是 [...] 中第一个出现的字符时,表示不匹配后面出现的字符,而 – 出现在文数字中间时,则表示从 xxx 到 xxx 的含义。因此欲匹配这两种情形下的 ^ 和 – 时是需要转义的。

忽略大小写敏感

默认情况下表达式是大小写敏感的,但可以通过 (?i) 来忽略大小写敏感。例如表达式 (?i)ab 可以匹配的目标文本包括 ab, AB, aB 和 Ab

PCRE 同时支持 (?-i) 来关闭 (?i) 的忽略效果,使 (?-i) 后面的表达式字符重回大小写敏感的默认状态。

Written by admin

September 27th, 2009 at 11:23 pm

Posted in Regular Expression

Tagged with

2 Responses to 'PCRE/Python 下的 re 细节(1)'

Subscribe to comments with RSS or TrackBack to 'PCRE/Python 下的 re 细节(1)'.

  1. 已阅. 你又悄悄摸摸倒腾了篇出来哈.

    hkbarton

    28 Sep 09 at 6:41 am

  2. 你形容得好猥琐…

    admin

    28 Sep 09 at 7:44 am

Leave a Reply