2007/04/26

python学习笔记(五): 正则表达式

>>> s = '100 BROAD'
>>> re.sub('ROAD$', 'RD.', s) #匹配以ROAD字串结尾的内容,替换成RD., $表示是以这个字串结尾的.
'100 BRD.'
>>> re.sub('\\bROAD$', 'RD.', s) #\b表有边界,比如前面有一个空格或断行等,但之前还有一个\,这里将不会转义.
'100 BROAD'
>>> re.sub(r'\bROAD$', 'RD.', s)
'100 BROAD'
>>> s = '100 BROAD ROAD APT. 3'
>>> re.sub(r'\bROAD$', 'RD.', s)
'100 BROAD ROAD APT. 3'
>>> re.sub(r'\bROAD\b', 'RD.', s)
'100 BROAD RD. APT 3'

加了r代表使用原始字符串,但这里的"原始字符串"有些难理解,既然字符串的内容不转义,为什么\b被解释成一个边界符?

r'^m?m$', 这里意思,必须以m开始,以及m结束的某个字符串,且中间以?代替,说明只允许出现一个字符串.
略过了一些内容.

正则还是有一些模糊,感觉这个更来得直观一些:正则表达式之道(A Tao of Regular Expressions)

没有评论: