Пропустить соответствие, если в определенном контексте - PullRequest
0 голосов
/ 25 октября 2019

Шаблон регулярного выражения требуется для соответствия всем экземплярам указанного слова, который не должен соответствовать только отдельным словам, а также содержанию внутри слова.

Например, поиск media соответствует экземпляру в mediator.

Есть несколько исключений. Если содержание слова находится в пределах url или декларации семейства шрифтов, совпадение должно быть пропущено. Это код, который я до сих пор придумал, но я что-то упустил, поскольку он пропускает все.

1 Ответ

0 голосов
/ 25 октября 2019

Вы можете добавить канал после (*SKIP)(*FAIL), а после font-family:

есть пробел. Обратите внимание, что вам не нужно экранировать \' в классе символов и если вы измените разделительк чему-то еще, кроме /, вам также не нужно избегать их. Вы также можете опустить группу захвата вокруг носителя.

(?:font-family:\h*|https?:\/\/)[^\s'";}]*(*SKIP)(*FAIL)|\bmedia\b
  • (?: Группа без захвата
    • font-family:\h* Совпадение font:family: и 0+ горизонтальных пробельных символов
    • | Или
    • https?:\/\/ Матч http и необязательный s
  • ) Закрыть группу без захвата
  • [^\s'";}]* Матч0+ раз любой символ кроме '"; или символ пробела
  • (*SKIP)(*FAIL) Потреблять и избегать использования SKIP и FAIL
  • | Или
  • \bmedia\b Соответствие медиа между границами слов

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...