Я пытаюсь соответствовать шаблону ожидаю группу
Шаблон, который я пытаюсь сопоставить, /\|/g
то есть | персонаж
Пример —
Val 1 | Val 2 | Val3
Это вернет 2 матча
Но я хочу пропустить | символ, если он внутри [[]]
Пример —
Val 1 | [[| ]] | Val 3 ‘
Здесь я не хочу | символ внутри [[]] должен быть возвращен. Поэтому он должен вернуть 2 совпадения.
Я попробовал отрицательный взгляд, но мое регулярное выражение, похоже, не работает.
Я захватил [[| | ]] с помощью —\[\[.*\|.*\]\]
[^(\[\[.*\|.*\]\])]
а также (?!(\[\[.*\|.*\]\]))
кажется, не дает мне желаемого результата.
Спасибо !
Использовать Техника SKIP-FAIL:
\[\[.*?]](*SKIP)(*FAIL)|\|
Увидеть regex demo
подробности
\[\[.*?]](*SKIP)(*FAIL)
— Матчи [[
, затем любые 0+ символов, как можно меньше, кроме символов разрыва строки (добавить /s
модификатор для соответствия между строками), а затем ]]
а затем (*SKIP)(*FAIL)
(или же (*SKIP)(*F)
или же (*SKIP)(?!)
) пропустит совпадение и заставит механизм регулярных выражений продолжать поиск другого |
с конца текущего матча|
— или же\|
— буквальный |
символ трубыДругих решений пока нет …