我正在将一些库从PHP移植到JavaScript,我遇到了这个正则表达式,其中有些部分对我来说不清楚。
#(?: *+(?<= |^)\.((?:\([^)\n]++\)|\[[^\]\n]++\]|\{[^}\n]++\}|<>|>|=|<){1,4}?))#
不清楚的部分
*+
++
我知道,这个表达应该接受像
这样的字符串.(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
修饰符一起使用
答案 0 :(得分:20)
++
来自What is double plus in regular expressions?
它基本上意味着如果正则表达式引擎稍后失败匹配,它将不会返回并尝试撤消它在此处所做的匹配。在大多数情况下,它允许引擎fail much faster,并且可以在您需要的地方为您提供控制 - 这在大多数情况下非常罕见。
*+
*+
是*
量词的占有量词。
答案 1 :(得分:0)
量词(?,*或+)后的加号是占有量词。
Can someone explain Possessive Quantifiers to me? (Regular Expressions)