Прежде всего, попытка манипулировать HTML с помощью регулярных выражений может быть не очень хорошей идеей.
При этом, согласно таблице сравнения вкусов на регулярном выражении регулярных выражений .info , регулярное выражение ActionScriptоснован на механизме ECMA, который поддерживает lookaheads .
Таким образом, вы можете написать это:
/(?:href|HREF)="(?!event:)(.[^"]*)"/
(?=…)
is Positive Lookahead;он утверждает, что данный шаблон может быть сопоставлен.(?!…)
является отрицательным с нетерпением;он утверждает, что данный шаблон может НЕ быть сопоставленным.
Обратите внимание, что включение .
очень своеобразно.Вероятно, он не предназначен для включения туда .
, поскольку он может соответствовать закрывающей двойной кавычке.
Обратите внимание, что я исправил чередование для href/HREF
, используя незахват группа (?:…)
.
Это потому, что:
this|that
соответствует либо "this"
, либо "that"
this|that thing
соответствует либо "this"
или "that thing"
(this|that) thing
соответствует либо "this thing"
, либо "that thing"
В качестве альтернативы вы также можете захотетьпросто включите флаг нечувствительности к регистру /i
, который будет обрабатывать такие вещи, как hReF
или eVeNt:
.
Таким образом, возможно, ваш шаблон должен быть просто
/href="(?!event:)([^"]*)"/gsi
Если lookahead не поддерживается, вы можете использовать необязательный шаблон, который соответствует event:
, если он есть, исключая его из группы 1, чтобы он не включалсяпри замене в $1
.
/href="(?:event:)?([^"]*)"/gsi
\________/ \_____/
non-capturing group 1
optional