捕获的用户名中也可以包含$
符号,例如$mahanta
。我的正则表达式是
\${([^}]+)}
但是这是行不通的。由于语言是Java,而regex表达式是String,所以我用另一个反斜杠转义了$
。甚至还添加了两个反斜杠。但是给出了运行时异常。
答案 0 :(得分:0)
这有效:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("\\$\\{([^}]+)}");
Matcher matcher = pattern.matcher("${$mat}");
System.out.println("matcher = " + matcher);
boolean matches = matcher.matches();
System.out.println("matches = " + matches);
String group = matcher.group(1);
System.out.println("group = " + group);
}
}
请参阅Java PatternSyntaxException: Illegal repetition on string substitution?,以了解为什么需要{
进行转义。