我需要将以下字符串与Java中的正则表达式进行匹配:
Hello: ${firstName} ${lastName}
得到这个:
${firstName}
${lastName}
我尝试过这个:
@Test
public void testRegexMatch() {
String regex = Pattern.quote("${") + ".+" + Pattern.quote("}");
String str = "Hello: ${firstName} ${lastName}";
Matcher m = Pattern.compile(regex).matcher(str);
while (m.find()) {
System.out.println(str.substring(m.start(), m.end()));
}
}
但是我得到了以下输出:
${firstName} ${lastName}
最佳答案
尝试将 .+
替换为 [^\}]+
。它将匹配尽可能多的非 }
字符。
还需要注意的是,此方法优于使用非贪婪量词 .+?
,因为这将在没有任何回溯的情况下进行匹配,而非贪婪版本将每个字符回溯一次括号内。在这种情况下,您可能不会注意到性能受到影响,但养成编写尽可能最有效的正则表达式的习惯非常重要
关于java - 将以下内容与正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7838919/