Регулярное выражение, соответствующее любой подстроке только после разделителя - PullRequest
0 голосов
/ 28 февраля 2019

Как определить регулярное выражение, которое будет соответствовать точной строке, например: {VAR}

Или что-нибудь в этом формате: {VAR: 10} {VAR: что-то} ... что означает «:»присутствует, затем принимайте что-либо справа от него до закрытия}.

Таким образом, оно НЕ должно соответствовать этому: {VAR2} или {VAR3} и т. д.

Прямо сейчас яиспользуя 2 отдельных регулярных выражения для поиска вышеупомянутых 2 сценариев и хотел бы использовать один.

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Попробуйте Regex: {VAR}|(?<={VAR:)\w+(?=})

Демо

0 голосов
/ 28 февраля 2019

Во-первых, я бы посоветовал почитать о взглядах, взглядах за спиной и о конструкции If-Then-Else.Я рекомендую эту статью на www.regular-expressions.info для подробного объяснения

Регулярное выражение ниже должно охватывать то, что вам нужно

{VAR(?(?=:)[^}]*}|})

Демонстрация

Шаблон начинается с {VAR, так как он постоянен для всех ваших сценариев.Затем мы используем конструкцию if-then-else и положительный взгляд на будущее, чтобы проверить наличие двоеточия (?(?=:) и сопоставить все, вплоть до закрывающей фигурной скобки, если двоеточие существует с [^}]*}.Если двоеточие не существует, часть после или |будет соответствовать только закрывающей скобке}.

0 голосов
/ 28 февраля 2019

Это может быть немного грубо, но я считаю, что это то, что вы ищете:

^{VAR(}|(:[A-Z0-9]+?)})$

Это примет начало строки как {VAR, а затем проверьте, найдет ли он один изa} или a: сопровождаемый серией цифр или символов в верхнем регистре, пока он не найдет}.

Редактировать: я не знал, что OP искал что-нибудь после символа, поэтому я написал новую версиюэто займет любой символ.

^{VAR(}|(:.+)})$

Вот также Демо этого.

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