首页 > 解决方案 > 想要字符串 ${username} 的正则表达式

问题描述

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

\${([^}]+)}

但这不起作用。由于语言是 java 并且正则表达式是字符串,我$用另一个反斜杠转义了。甚至添加了 2 个反斜杠。但是给出了运行时异常。

标签: javaregex

解决方案


这有效:

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:字符串替换上的非法重复?关于为什么{需要逃脱。


推荐阅读