В регулярном выражении, как я могу гарантировать, что если я найду один конкретный символ, я также должен найти другой символ в строке?

#regex #regex-lookarounds

#регулярное выражение #regex-поисковые запросы

Вопрос:

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

Допустимые строки:

пример{}
пример{пример}
пример}пример{

Недопустимые строки:

пример{пример
примера}пример

Комментарии:

1. Пока эти специальные символы не являются вложенными, регулярное выражение для их сопоставления может быть записано, но не в том случае, если они вложены.

Ответ №1:

Регулярное выражение, которое выполняет именно то, что задано:

 ^[^{}n]*$|^(?=[^{n]*{)(?=[^}n]*}).*
  

регулярное выражение101

Матчи

  • либо строка, которая не содержит { или }
  • или строка, которая содержит хотя бы один { и хотя бы один }