问题描述
问题很简单,我需要在${value}
找到所有此类文本的值:
*test text $(1123) test texttest text${asd} test text test text test text ${123} test text[123132] test text [1231231]*
我应该得到
-
asd
-
123
我已经做了类似但是如您所见,它工作不正常。
1楼
尝试:
\$\{([^}]+)\}
您将)
而不是}
放在字符类([^}])
否定中
2楼
您可以使用向后看来获得所需的结果:
探索更多
正则表达式(?<=\\$\\{)[^}]+
解释:
(?<= look behind to see if there is:
\$ '$'
\{ '{'
) end of look-behind
[^}]+ any character except: '}' (1 or more times)
样例代码:
String str = "test text $(1123) test texttest text${asd} test text test text test text ${123} test text[123132] test text [1231231]";
Pattern pattern = Pattern.compile("(?<=\\$\\{)[^}]+");
Matcher matcher = pattern.matcher(str);
while(matcher.find()){
System.out.println(matcher.group());
}
输出:
asd
123