Как сопоставить внутренний возможный результат с регулярными выражениями - PullRequest
2 голосов
/ 09 июля 2009

У меня есть регулярное выражение для совпадения чего-либо между {и} в моей строке.

"/{.*}/"

Не может быть проще. Проблема возникает, когда у меня одна строка с несколькими совпадениями. Так что, если у меня есть такая строка:

это моя {строка}, она не {работает} правильно

Регламент будет соответствовать

{строка}, она не {работает}

вместо

* * {Тысячи двадцать-одиной строки} * * тысяча двадцать-дв

Как мне сделать так, чтобы он совпадал с первым результатом?

Ответы [ 4 ]

12 голосов
/ 09 июля 2009

Знак вопроса означает «не жадный»

"/{.*?}/"
3 голосов
/ 09 июля 2009

Используйте класс символов, который включает в себя все, кроме правой скобки:

/{[^}]+}/
1 голос
/ 09 июля 2009

это будет работать с одиночными вложенными фигурными скобками, глубина которых равна единице: {(({.*?})*|.*?)*}

Я не уверен, как получить бесконечную глубину или вообще возможно ли это с помощью регулярного выражения

0 голосов
/ 09 июля 2009

Поведение по умолчанию - жадное сопоставление, то есть сначала {до последнего}. Использовать ленивое сопоставление? после вашего *.,

/{.*?}/

или даже вместо * используйте "not a}"

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