我有一个格式为${something}的String,并希望使用Java中的正则表达式提取something。这是我的代码:

String tmp = null;
Pattern pVars = Pattern.compile("\\$\\{([^}]*)\\}");
Matcher mVars = pVars.matcher(vars[0]);
if (mVars.find())
{
         tmp = mVars.group();
}


但是在这种情况下,我得到了完整的字符串。

最佳答案

您仍在提取整个模式,而不是提取括号内的组。这是group没有参数时的行为。

通过传递1作为参数来指定第一个捕获组:

tmp = mVars.group(1);

10-06 05:41