正则表达式中的元素

时间:2016-04-07 15:58:36

标签: python regex

我对RE很新。 “*”和“+”之间有什么区别?它们似乎都表示尽可能多地将前面的元素等于零或多次?

3 个答案:

答案 0 :(得分:0)

+表示一次或更多次,而* 或更多次

  

“*”导致生成的RE匹配 0 或更多次重复   在RE之前,尽可能多的重复。 ab *将匹配'a',   'ab'或'a'后跟任意数量的'b'。

     

'+'导致结果   RE匹配前一个RE的 1 或更多次重复。 ab +将匹配   'a'后跟任何非零数字的'b';它不会匹配   “A”。

Source

答案 1 :(得分:0)

*匹配0次或更多次。即使没有匹配也很成功。因此a*即使在字符串bcd

中也会成功

+匹配1次或更多次。应该至少有一个匹配,然后只有它成功。如果我们使用a+,那么成功匹配应该至少有一个a。因此字符串bcd

会失败

*+都属于贪婪,因此在terminating or backtracking

之前它们会尽可能匹配

答案 2 :(得分: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>

来自re的{​​{3}}的引用:

  
      
  • + - 使得到的RE与 1 或前一个RE的更多重复相匹配。 ab+将匹配a,后跟任何非零数量的b s; 仅与a
  • 不匹配   
  • * - 使得到的RE与 0 或前一个RE的更多重复相匹配,尽可能多的重复。 ab*将匹配aaba ,后跟任意数量的b
  •