我知道这是一个非常简单的问题。我碰巧看到了一个正则表达式示例。
import re
pattern = r'^M?M?M?$'
s = "MDM"
re.search(pattern, s)
我可以知道为什么它与字符串s
不匹配吗? AFAIK,?
是指定出现 0 次或 1 次。不过它与 MMM 匹配。
但是,当模式为 r'M?M?M?$'
或 r'^M?M?M?'
时,相同的字符串会匹配。我不明白这里有什么不同。有人可以解释一下吗?
最佳答案
r'^M?M?M?$'
与 r'^M{0,3}$'
相同。因此,您的模式接受 ''、'M'、'MM'、'MMM'
字符串。
r'M?M?M?$'
与 r'M{0,3}$
相同,实际上接受所有字符串,因为字符串末尾始终是空部分:
In [21]: pattern = r'M?M?M?$'
In [22]: re.search(pattern, 'A string without capital m at all')
Out[22]: <_sre.SRE_Match object; span=(33, 33), match=''>
关于Python正则表达式处理 "?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35574690/