RegEx: извлечь все до X, где X не находится между двумя скобками - PullRequest
1 голос
/ 17 ноября 2010

Я ищу регулярное выражение, которое извлекает все после заданного текста (здесь "HIT") до следующего символа канала "|" который НЕ окружен "[[" и "]]".

Пример-Текст:

text | HIT = [[t1|t2]] moretext [[more braces]] | moretext | moretext

Это регулярное выражение, которое я пробовал:

HIT[ \t]*=(.[^\|]+)

Конечно, это возвращает только " HIT = [[t1 ", но я ищу регулярное выражение, которое возвращает " HIT = [[t1 | t2]] moretext [[more braces]] ".

Спасибо за вашу поддержку

Кристиан

1 Ответ

2 голосов
/ 17 ноября 2010

Попробуйте это регулярное выражение:

HIT[ \t]*=((?:[^[|]|\[\[[^[\]]*]])*)

Часть (?:[^[|]|\[\[[^[\]]*]])* соответствует

  • любой последовательности любого символа, кроме [ и | ([^[|]) или
  • последовательность любого символа, кроме [ и ], которая окружена [[…]] (\[\[[^[\]]*]]).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...