簡體   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