2016-04-07 56 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小號