我必须从文本文件中找到类似$ {test}的字词。并将取代基于某些标准。在常规快递'$'中有搜索的含义直到行尾。
要检测的正则表达式是什么,如$ {\ w +}。
答案 0 :(得分:1)
您可以尝试使用此正则表达式:
"\\$\\{\\w+\\}"
和方法String#replaceAll(String regex, String replacement)
:
String s = "abc ${test}def"; // for example
s = s.replaceAll("\\$\\{\\w+\\}", "STACKOVERFLOW");
答案 1 :(得分:1)
[^}]*
而不是\w+
?
您可能需要考虑使用[^}]*
而不是\w+
。前者匹配任何不是右括号的字符,因此它允许test-123,第二个拒绝。当然,这可能只是你想要的。
我们假设这是原始正则表达式(请参阅the demo中匹配的内容):
\$\{[^}]*\}
\\$\\{[^}]*
。\$\{\w+\}
必须用作\\$\\{\\w+\}
用Java替换匹配
String resultString = subjectString.replaceAll("\\$\\{[^}]*\}", "Your Replacement");
迭代Java中的匹配
Pattern regex = Pattern.compile("\\$\\{[^}]*\}");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
// the current match is regexMatcher.group()
}
<强>解释强>
\$
与文字$
\{
匹配左括号[^}]*
匹配任何不是右括号的字符\}
一个大括号