регулярное выражение для поиска переменных в строке - PullRequest
0 голосов
/ 22 мая 2018

Есть строка, в которой может быть одна или несколько "переменных".Переменная определяется как {[a-zA-Z0-9 _ + -] *}.В поисках способа избежать фигурной скобки, но в конце я смотрю на это:

Map<String, String> variableMap = getVarilableMap();
wrapperTDO.getValueList()
    .stream()
    .forEach(a -> /* if a.getValue() has one or more variables, replace from the map variableMap, and update setValue() */ );

Вопросы:

  1. Какое правильное регулярное выражение, чтобы найти всепеременные в строке и не найти ложных срабатываний, например, {abc - ничто, или {ab ​​{ac} должен быть только {ac}.
  2. Есть ли какой-нибудь способ поместить все это в одну лямду в javaминимизировать ли заявления?
  3. Это двухэтапный процесс, отфильтровать до переменных с переменными, а затем заменить только из них?

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Escape {используя {.

Чтобы создать группу захвата, окружите ее ().

Посмотрите на классы Pattern и Matcher.The Matcher поможет вам найти все группы.

0 голосов
/ 22 мая 2018

Если вы не хотите, чтобы фигурные скобки были частью матча, используйте шаблон регулярных выражений

(?<=\\{)[\\w+-]+(?=\\})

Если вы хотите фигурныескобки, чтобы быть частью матча, используйте регулярное выражение

\\{[\\w+-]+\\}
0 голосов
/ 22 мая 2018

Просто выделите его с помощью \

\{[a-zA-Z0-9_+-]*}

, очевидно, вам также нужно экранировать \, чтобы вы получили

\\{[a-zA-Z0-9_+-]*}

Вот пример https://www.regextester.com/?fam=103576

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