Необходимо найти «переменные» в строке.Значение переменной% [/ w] +% означает, что в строке может быть несколько переменных:
%ABC%
%ABC%-%RED%
Lorem ipsum %GeT% sit amet, %% consectetur %QW23% elit.
В третьем примере %% НЕ должно быть найдено, оно будетбыть заменены на один%.Что-то вроде # [\ w + -] + # не работает, потому что не может определить, что во второй строке это% ABC% и% RED%, а скорее% -%.У меня сложилось впечатление, что необходимо использовать как группы, так и обратные ссылки, но я не могу найти хорошего примера, чтобы объяснить, как это сделать на Java.
Люди спрашивают некоторые ответы на вопросы, поэтомувот, пожалуйста:
Что именно я ожидаю в качестве окончательного результата?Что ж, поскольку субъект предполагает, что% ABC% - это «переменная», которая определяется где-то еще, конечная цель - «найти переменную и заменить ее на правильное значение».Цель регулярного выражения - найти все «переменные» в строке.
Итак, где-то в памяти есть карта, где:
ABC = "mike"
RED = "Red Storm"
GeT = "hometown"
QW23 = "Quick and easy"
(примечание: еслиключи должны иметь% вокруг имени, что тоже нормально)
Цель регулярного выражения - найти переменную, поэтому в первой строке она найдет ABC (или% ABC%), так чточто код и поиск ABC, чтобы определить, что правильным значением является mike, и так далее ... Вот требуемый вывод приведенных строк:
mike
mike-Red Storm
Lorem ipsum hometown sit amet, % consectetur Quick and easy elit.
Я не ожидаю, что выражение reg на самом делесделать полную замену, но просто найти кусочки, чтобы другой код и сделать замену.Я также не ожидаю, что он преобразует %% в%, но оставлю это в покое, чтобы после простого поиска %% можно было преобразовать его в%.