我正在尝试使用Python中的一些简单的正则表达式函数。我正在使用正则表达式来捕捉阿拉伯字母表中的模式,但是在最简单的情况下,当在模式的开头添加几个字母时,无论是否存在连字,它似乎都不起作用:
>>> p = re.compile(r'ترينهايمان')
>>> p.match('به ترينهايمان')
>>>
>>> p = re.compile(r'ترینهایمان')
>>> p.match('بهترینهایمان')
>>>
较长的字符串基本上是模式本身,在开头添加了两个字母。
AFAIK,匹配应该返回一个值,但它不会。
并且它很好奇,因为当你在模式的末尾添加一个字母时,它会抓住它:
>>> p = re.compile(r'ترينهايمان')
>>> p.match('ترينهايماني')
<_sre.SRE_Match object at 0x02C52FA8>
>>> p.match('بهترينهايمان')
>>>
答案 0 :(得分:2)
re.match
只匹配从字符串开头开始的模式:
re.match(pattern,string,flags = 0)
如果字符串开头的零个或多个字符与。匹配 正则表达式模式,返回相应的MatchObject 实例。如果字符串与模式不匹配,则返回None;注意 这与零长度匹配不同。
由于您尝试在开头将字符串与额外字符匹配,match
将无法将字符串识别为匹配项。您需要改为使用re.search
。