用等价的替换re.DOTALL



是否有表达式可以替换以下python代码行的标志re.DOTALL:

r = re.compile(r'<p>.*<p>.', re.IGNORECASE | re.MULTILINE | re.DOTALL)

像添加任何表达式到这个正则表达式:r'<p>.*<p>.'类似于:

r = re.compile(r'<p>something.*<p>.', re.IGNORECASE | re.MULTILINE )
但需要保持相同的行为,即匹配多行字符串(段落)

感谢

我想你把它弄反了,下面两个应该是等价的:

r = re.compile(r'<p>[sS]*<p>.', re.IGNORECASE | re.MULTILINE)
r = re.compile(r'<p>.*<p>.', re.IGNORECASE | re.MULTILINE | re.DOTALL)

即以DOTALL模式匹配.*应与禁用DOTALL模式匹配[sS]*的行为相同。

可以使用内联标志(?s)

re.compile(regex, re.DOTALL)

等价于

re.compile('(?s)' + regex)

最新更新