【问题标题】:Wanted regular expression for the string ${username} [duplicate]想要字符串 ${username} 的正则表达式 [重复]
【发布时间】:2019-07-03 09:33:38
【问题描述】:

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

\${([^}]+)}

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

【问题讨论】:

  • 转义第一个 { 字符。为了更加自信,你也可以避开最后一个 } 字符。
  • 这需要更多的上下文。例如,在表示正则表达式的 Java 字符串中,通常有双重转义。此外,您可能需要添加预期的输入/输出。

标签: java regex


【解决方案1】:

这行得通:

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?,了解为什么需要转义 {

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    相关资源
    最近更新 更多