regex match() 在 Python 中未能匹配简单模式
我正在尝试在Python中使用一些简单的正则表达式功能。我用正则表达式来匹配阿拉伯字母的模式,但在最简单的情况下,当我在模式前面加几个字母时,它似乎不管用,无论有没有连写字母:
>>> p = re.compile(r'ترينهايمان')
>>> p.match('به ترينهايمان')
>>>
>>> p = re.compile(r'ترینهایمان')
>>> p.match('بهترینهایمان')
>>>
这个较长的字符串基本上就是模式本身,只是在前面加了两个字母。
据我所知,match应该返回一个值,但它没有。
有趣的是,当你在模式的末尾加一个字母时,它却能匹配到:
>>> p = re.compile(r'ترينهايمان')
>>> p.match('ترينهايماني')
<_sre.SRE_Match object at 0x02C52FA8>
>>> p.match('بهترينهايمان')
>>>
1 个回答
4
re.match
只会匹配从字符串开头开始的模式:
re.match(pattern, string, flags=0)
如果字符串开头的零个或多个字符与正则表达式模式匹配,就会返回一个对应的 MatchObject 实例。如果字符串与模式不匹配,则返回 None;注意,这和匹配长度为零的情况是不同的。
因为你想匹配的字符串开头有额外的字符,所以 match
不会把这个字符串当作匹配。你需要使用 re.search
来进行匹配。