想要字符串$ {username}的正则表达式

时间:2019-07-03 09:33:38

标签: java regex

捕获的用户名中也可以包含$符号,例如$mahanta。我的正则表达式是

\${([^}]+)}

但是这是行不通的。由于语言是Java,而regex表达式是String,所以我用另一个反斜杠转义了$。甚至还添加了两个反斜杠。但是给出了运行时异常。

1 个答案:

答案 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?,以了解为什么需要{进行转义。