2016-04-07 59 views
-2

我对RE很新。 “*”和“+”之间的区别是什么?他们似乎都尽可能多地指出前面的元素是零次还是多次?正则表达式中的元素

+1

'帮助( '再')'那给你很多的信息,包括这一点。 – zondo

回答

0

+装置一个或更多次,而*或多次

“*” 的原因所产生的RE,以匹配前面的RE的 的或更多的重复,如尽可能多次重复。 ab *将匹配'a', 'ab'或'a',后跟任意数量的'b'。

'+'导致产生的 RE匹配或更多次重复先前的RE。 ab +将与 'a'匹配,然后匹配任意非零数字的'b';它不会匹配 'a'。

Source

0

*匹配0次或多次。即使没有匹配,它也是成功的。因此a*即使在字符串中也会成功bcd

+匹配1次或多次。至少应该有一场比赛,然后才能成功。如果我们使用a+,那么至少应该有一个a成功匹配。因此,将失败的字符串bcd

这两个*+在本质上贪婪所以他们将之前terminating or backtracking

0
  • +量词尽可能匹配选择前面的字符1次以上,如尽可能多次
  • *量词选择前面的字符0或更多次,尽可能多的次数

实例

使用Regex foo\d+bar(具有+):

foo1bar  # Match 
foo234bar # Match 
foobar  # Not a Match 

Using <code>+</code>

使用Regex foo\d*bar(具有*):

foo1bar  # Match 
foo234bar # Match 
foobar  # Match 

Using <code>*</code>


Python Docsre引述:

  • + - 使所得到的RE,以匹配前面的RE的1或更多次重复。 ab+将匹配a,后面跟着任何非零数字b s;它不会匹配只是a
  • * - 使所得到的RE以匹配0或多次重复前述RE的,因为多次重复作为是可能的。 ab*将匹配aab,或a后跟任意数量的b小号