如何解决用等价物替换 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>[\s\S]*<p>.',re.IGNORECASE | re.MULTILINE)
r = re.compile(r'<p>.*<p>.',re.IGNORECASE | re.MULTILINE | re.DOTALL)
也就是说,在 .*
模式下匹配 DOTALL
应该与在禁用 [\s\S]*
模式下匹配 DOTALL
的行为相同。
您可以使用 inline flag (?s)
。
re.compile(regex,re.DOTALL)
相当于
re.compile('(?s)' + regex)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。