python正则表达式,*不匹配

时间:2017-12-20 03:03:52

标签: python regex

我正在学习python。我使用的是python 3.6

reObject = re.compile(r'(ab*)')
mo1 = reObject.search('My name is abbb')
print (mo1.group())

以上代码仅匹配{名称'中的a而不是abbb

但是下面的代码匹配正确。

reObject = re.compile(r'(ab*)')
mo1 = reObject.search('My nme is abbb')
print (mo1.group())

如果字母出现在搜索字符串之前,如何匹配字符串?

2 个答案:

答案 0 :(得分:0)

http://www.rexegg.com/regex-quickstart.html是正则表达式的好资源

*字符表示找到0或更多 这将找到一个0 b'

+字符表示找到1个或更多

所以(ab +)会找到abbb

答案 1 :(得分:0)

请参阅Regular Expression Syntax

  

*   使得到的RE与前面RE的 0或更多重复匹配,尽可能多的重复。 ab *将匹配'a','ab'或'a',后跟任意数量的'b

     

+   导致生成的RE与前一个RE的 1次或更多次重复匹配。 a b +将匹配'a',后跟任何非零数字'b's ;它不会只匹配'a'。

如果您担心为什么ab*仅与第一个a匹配,那么它在技术上并不存在。问题在于您如何使用该模式:  re.search仅扫描第一场比赛。如果您想查找所有匹配项,请查看re.findall