Что означают ++ и *+ в регулярном выражении?
Я портирую некоторую библиотеку из 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
модификатор
2 ответа
++
Из чего стоит двойной плюс в регулярных выражениях?
Это притяжательный квантификатор.
По сути, это означает, что если механизм регулярных выражений не сможет выполнить сопоставление позже, он не вернется назад и не попытается отменить найденные здесь совпадения. В большинстве случаев это позволяет двигателю выходить из строя гораздо быстрее, и может дать вам некоторый контроль, где вам это нужно - что очень редко для большинства применений.
*+
*+
является собственническим квантификатором для *
квантор.
Плюс после квантификатора (?, * Или +) является собственническим квантификатором.
Может ли кто-нибудь объяснить мне "Притяжательные кванторы"? (Регулярные выражения)