Создание одного шаблона для типа $ {n} и типа {{coinsadded}}, чтобы его можно было найти в строке - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть различные типы регулярных выражений, которые могут присутствовать в строке.Например:

1. ${n}
2. {{coinsAdded}}
3. ${coinsAdded}, etc.

Мне нужно создать шаблон, чтобы я мог найти все типы регулярных выражений, присутствующих в строке.Может кто-нибудь, пожалуйста, попытаться помочь мне.

Я уже создал один шаблон -

\$\\{[a-zA-Z]*+\\}

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

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Самое простое * регулярное выражение, которое я могу придумать, будет:

\\$?(\\{[a-zA-Z]+}|\\{\\{[a-zA-Z]+}})

* В смысле "проще всего понять", а не в "самом компактном" смысле.

\\$?соответствует необязательному $.После чего следует \\( одно из:
\\{[a-zA-Z]+}, то есть регулярное выражение с использованием одной пары {},
| ИЛИ,
\\{\\{[a-zA-Z]+}} регулярное выражение с использованием двойного {{}}.

Тест:

System.out.println("{n}".matches("\\$?(\\{[a-zA-Z]+}|\\{\\{[a-zA-Z]+}})"));
System.out.println("{{coinsAdded}}".matches("\\$?(\\{[a-zA-Z]+}|\\{\\{[a-zA-Z]+}})"));
System.out.println("${coinsAdded}".matches("\\$?(\\{[a-zA-Z]+}|\\{\\{[a-zA-Z]+}})"));
System.out.println("{{{coinsAdded}}}".matches("\\$?(\\{[a-zA-Z]+}|\\{\\{[a-zA-Z]+}})"));
System.out.println("$${coinsAdded}".matches("\\$?(\\{[a-zA-Z]+}|\\{\\{[a-zA-Z]+}})"));

Выход:

true
true
true
false
false

0 голосов
/ 10 декабря 2018

Обновление благодаря @Spara за указание на отсутствие

(?:\${)[a-zA-Z]+(?:})|(?:\${{)[a-zA-Z]+(?:}})|(?:{{)[a-zA-Z]+(?:}})

Демо

Вы можете попробовать это

\$?{{?[a-zA-Z]*}}?

Пояснение

  • \$? - будет соответствовать $ (? делает его необязательным).
  • {{? - будет соответствовать { или {{.
  • [a-zA-Z]* - будет соответствовать любому символу от нуля до нуля или более раз.
  • }}? - будет соответствовать } или }}.

Демо

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