我有以下java字符串:
"Java (simple) _New=AB_U748490_JAVA47BYH"
..并且我正在使用以下正则表达式:
"_New=[A-Z]{2}_(\w{7})_(JAVA.+)";
问题: :它始终返回false
。但是为什么呢?
答案 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()方法。
希望有帮助。