当前位置: 代码迷 >> java >> RegEx-$ {value}的表达式
  详细解决方案

RegEx-$ {value}的表达式

热度:128   发布时间:2023-07-25 20:10:24.0

问题很简单,我需要在${value}找到所有此类文本的值:

*test text $(1123) test texttest text${asd} test text test text test text ${123} test text[123132] test text [1231231]*

我应该得到

  • asd
  • 123

我已经做了类似但是如您所见,它工作不正常。

尝试:

\$\{([^}]+)\}

您将)而不是}放在字符类([^}])否定中

您可以使用向后看来获得所需的结果:

探索更多

正则表达式(?<=\\$\\{)[^}]+解释:

  (?<=                     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
  相关解决方案