Регулярное выражение для $ {...} интерполяции переменных - PullRequest
0 голосов
/ 02 декабря 2011

Очень застрял в проблеме, которая, как мне показалось, будет довольно простой.В качестве примера у меня есть следующие строки, мне нужно интерполировать значения в:

"некоторый другой текст или ничего" $ {who} равен $ {what} какой-то другой текст или ничего "" какой-то другой текст или ничего что-то ${postfix} какой-то другой текст или ничего "" какой-то другой текст или ничего $ {prefix} что-то другой текст или ничего "

Мне нужно сгруппировать вещи $ {...} так, чтобы я могзамените их значением позже.

Я выполняю свои совпадения RegEx в Clojure, так что на самом деле за кулисами используются библиотеки Java RegEx.До сих пор я пытался:

user=> (def regex #"(\$\{\w+\})*")
#'user/regex
user=> (def matcher (re-matcher regex "${who} is a great ${that}person"))
#'user/matcher
user=> (re-find matcher)
["${who}" "${who}"]
user=> (re-find matcher)
["" nil]

Я не могу получить $ {that}, чтобы считаться совпадением ...

1 Ответ

3 голосов
/ 02 декабря 2011

Выражение

(\$\{\w+\})

должно работать, хотя вы можете использовать его вместо этого:

\$\{(\w+)\}

Ваше выражение имеет * в конце, что разбивает его нав некоторых случаях, хотя это должно работать в этом случае (если вам не нужно ничего избегать дважды).Правильно ли вы используете regex API?Работает ли он с простыми совпадениями типа \w+?

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