码迷,mamicode.com
首页 > 编程语言 > 详细

【python cookbook】【字符串与文本】8.编写多行模式的正则表达式

时间:2016-08-20 19:13:31      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

问题:用正则表达式对一段文本块做匹配,但是希望在进行匹配时能够跨越多行

解决方案:

1、正则表达式添加对换行符的支持;

2、re.compile()函数一个有用的标记-re.DOTALL使得正则表达式中的句点(.)可以匹配所有的字符,也包括换行符;

如上问题一般出现在希望使用句点(.)来匹配任意字符,但是忘记了句点并不能匹配换行符时。例如,假设想匹配C语言风格的注释:

import re

text = ‘‘‘/* this is a
...             multiline comment */
...‘‘‘
comment = re.compile(r/\*(.*?)\*/)
print(comment.findall(text))

comment2 = re.compile(r/\*((?:.|\n)*?)\*/) #(?:.|\n)指定了一个非捕获组(即,这个组只做匹配但不捕获结果,也不会分配组号)
print(comment2.findall(text))

comment_dotall=re.compile(r/*(.*?)\*/,re.DOTALL)
print (comment_dotall.findall(text))
>>> ================================ RESTART ================================
>>> 
[]
[ this is a\n...             multiline comment ]
[* this is a\n...             multiline comment ]
>>> 

 

【python cookbook】【字符串与文本】8.编写多行模式的正则表达式

标签:

原文地址:http://www.cnblogs.com/apple2016/p/5790890.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!