检测$ character java正则表达式

时间:2014-06-29 07:23:23

标签: java regex character

我必须从文本文件中找到类似$ {test}的字词。并将取代基于某些标准。在常规快递'$'中有搜索的含义直到行尾。

要检测的正则表达式是什么,如$ {\ w +}。

2 个答案:

答案 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中匹配的内容):

\$\{[^}]*\}
  • 在Java中,我们需要进一步逃避反斜杠,产生\\$\\{[^}]*
  • 同样,\$\{\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()
} 

<强>解释

  • \$与文字$
  • 相匹配
  • \{匹配左括号
  • [^}]*匹配任何不是右括号的字符
  • \}一个大括号