繁体   English   中英

将正则表达式与多行字符串匹配

[英]Matching a Regex against a multiline string

我正在尝试将正则表达式与多行字符串匹配,但是第一行之后匹配失败。

这些表达式按预期工作:

>>> import re
>>> r = re.compile("a")
>>> a = "a"
>>> r.match(a)
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>> a = "a\n"
>>> r.match(a)
<_sre.SRE_Match object; span=(0, 1), match='a'>
>>>

尽管此表达式不起作用:

>>> a = "\na"
>>> r.match(a)
>>>

re.match旨在从字符串的第一个字符(开头)开始进行匹配。 在前两个示例中,匹配很好,因为a是第一个字符。 但是,在最后一个示例中,匹配失败,因为\\n是第一个字符。

在这种情况下,您需要使用re.search来让Python搜索a

>>> import re
>>> r = re.compile("a")
>>> a = "\na"
>>> r.search(a)
<_sre.SRE_Match object; span=(1, 2), match='a'>
>>>

另外,请注意:如果使用多行字符串,则需要将dot-all标志设置为have . 匹配换行符。 这可以通过re.DOTALL完成。

为什么不match

match在字符串的开头搜索模式。

如何纠正?

使用search代替

>>> import re
>>> pat=re.compile('a')
>>> pat.search('\na')
<_sre.SRE_Match object at 0x7faef636d440>
>>> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM