如何编写正则表达式以匹配Java中的模式?

时间:2018-11-19 20:02:09

标签: java regex spring-mvc

我有以下java字符串:

"Java (simple) _New=AB_U748490_JAVA47BYH"

..并且我正在使用以下正则表达式:

"_New=[A-Z]{2}_(\w{7})_(JAVA.+)";

问题: :它始终返回false。但是为什么呢?

1 个答案:

答案 0 :(得分:2)

您编写正则表达式的方式将与Matcher.find()一起使用,因为find在任何地方都在整个输入字符串中搜索正则表达式。

如果要使正则表达式完全匹配,则需要对正则表达式进行少量修改,并在正则表达式的开头加上。*,例如

.*_New=[A-Z]{2}_(\\w{7})_(JAVA.+)

注意在Java中如何将\字符转义为\\

尝试使用此代码,它将显示Matches

public static void main(String[] args) {
    String s = "Java (simple) _New=AB_U748490_JAVA47BYH";
    Pattern p = Pattern.compile(".*_New=[A-Z]{2}_(\\w{7})_(JAVA.+)");

    Matcher m = p.matcher(s);
    if (m.matches()) {
        System.out.println("Matches");
    } else {
        System.out.println("Didn't match");
    }
}

或者,如果不想更改正则表达式,可以在Matcher对象上使用find()方法。

希望有帮助。