在Python中,我可以做到
import re
re.match("m", "mark")
我得到了预期的结果:
<_sre.SRE_Match object; span=(0, 1), match='m'>
但它只有在模式位于字符串的开头时才有效:
re.match("m", "amark")
给出None
。关于这种模式需要它在字符串的开头 - 没有^
或类似的东西。事实上,它在regex101上按预期工作。
Python是否有一些特殊行为 - 请问如何禁用它?
答案 0 :(得分:11)
来自re.match
上的文档:
如果
string
的开头的零个或多个字符与正则表达式pattern
匹配,则返回相应的匹配对象。
使用re.search
搜索整个字符串。
文档甚至将此问题作为自己的章节,概述了两者之间的差异:search()
vs. match()
答案 1 :(得分:0)
import re
re.match("[^m]*m", "mark")
match
从string的开头匹配。所以如果m
不在字符串的开头,你需要给它一个匹配字符串开头的方法。