regex match()无法在python中捕获一个简单的模式

时间:2014-07-16 02:43:11

标签: python regex python-3.x arabic

我正在尝试使用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('بهترينهايمان')
>>>

1 个答案:

答案 0 :(得分:2)

re.match只匹配从字符串开头开始的模式:

  

re.match(pattern,string,flags = 0)

     

如果字符串开头的零个或多个字符与。匹配   正则表达式模式,返回相应的MatchObject   实例。如果字符串与模式不匹配,则返回None;注意   这与零长度匹配不同。

由于您尝试在开头将字符串与额外字符匹配,match将无法将字符串识别为匹配项。您需要改为使用re.search