21

我正在将一些库从 PHP 移植到 JavaScript,我遇到了这个正则表达式,它的某些部分我不清楚。

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

不清楚的部分是

  1. *+
  2. ++

我知道,这个表达式应该接受像这样的字符串

.(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修饰符一起使用。

4

1 回答 1

24

++

什么是正则表达式中的双加?

那是一个占有量词

这基本上意味着如果正则表达式引擎稍后匹配失败,它不会返回并尝试撤消它在此处所做的匹配。在大多数情况下,它可以让引擎更快地发生故障,并且可以让您在需要的地方进行一些控制——这对于大多数用途来说是非常罕见的。

*+

*+是量词的所有格*量词。

于 2013-06-12T11:25:32.263 回答