++和* +在正则表达式中的含义是什么?

时间:2013-06-12 11:17:57

标签: php regex

我正在将一些库从PHP移植到JavaScript,我遇到了这个正则表达式,其中有些部分对我来说不清楚。

#(?: *+(?<= |^)\.((?:\([^)\n]++\)|\[[^\]\n]++\]|\{[^}\n]++\}|<>|>|=|<){1,4}?))#

不清楚的部分

  1. *+
  2. ++
  3. 我知道,这个表达应该接受像

    这样的字符串
    .(title)[class]{style}<>
    .[class]{style}<>
    .[class](title){style}
    // and so one - no metter of order \(.+\), \[.+\] and \{.+\} parts 
    // and optional <>, >, = or < at the end
    

    感谢您的解释。

    编辑:此表达式与PCRE_UNGREEDY修饰符一起使用

2 个答案:

答案 0 :(得分:20)

++

来自What is double plus in regular expressions?

  

那是Possessive Quantifier

     

它基本上意味着如果正则表达式引擎稍后失败匹配,它将不会返回并尝试撤消它在此处所做的匹配。在大多数情况下,它允许引擎fail much faster,并且可以在您需要的地方为您提供控制 - 这在大多数情况下非常罕见。

*+

*+*量词的占有量词。

答案 1 :(得分:0)

量词(?,*或+)后的加号是占有量词。

Can someone explain Possessive Quantifiers to me? (Regular Expressions)