Регулярное выражение, совпадение символов между {} - PullRequest
0 голосов
/ 28 июля 2010

Я пытаюсь найти текст, который содержит <или> между {}. Это внутри HTML, и у меня возникли проблемы с тем, чтобы сделать его "нечистым".

Итак, я хочу найти текст, соответствующий этим строкам:

{test > 3}
{testing >= 3 : comment}
{example < 4}

Я пробовал несколько регулярных выражений, но, похоже, все они продолжаются после закрытия}, включая HTML с <или>. Например, я попробовал это регулярное выражение

{.*?(<|>).*?}

, но в итоге получается такой текст:

{if true}<b>testing</b>{/if}

Кажется довольно простым, любой текст между {}, который содержит <или>.

Ответы [ 4 ]

4 голосов
/ 28 июля 2010

Это должно сработать:

{[^}]*(<|>).*}
1 голос
/ 28 июля 2010

Еще более эффективное регулярное выражение (потому что нет сопоставления без жадности):

'#{[^}<>]*[<>]+[^}]*}#'

Причина, по которой в третьем классе символов нет скобок, заключается в том, что он сопоставляет строки с несколькими> (например, {foo <> bar} ...

0 голосов
/ 28 июля 2010

Вы пытались использовать переключатель Ungreedy (U)?

0 голосов
/ 28 июля 2010
{[^}]*?(<|>)[^{]*?}

Попробуй это. Обратите внимание, что я заменил . s на класс символов, который означает все, кроме левой / правой фигурных скобок.

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