一尘不染

Java Regex中match()和find()之间的区别?

java 正则表达式

Java 正则表达式中match()和find()之间的区别?


阅读 2406

收藏
2020-01-10

共1个答案

一尘不染

matches尝试将表达式与整个字符串匹配,^$在模式的开头和结尾隐式添加 ,这意味着它将不查找子字符串。因此,此代码的输出:

public static void main(String[] args) throws ParseException {
    Pattern p = Pattern.compile("\\d\\d\\d");
    Matcher m = p.matcher("a123b");
    System.out.println(m.find());
    System.out.println(m.matches());

    p = Pattern.compile("^\\d\\d\\d$");
    m = p.matcher("123");
    System.out.println(m.find());
    System.out.println(m.matches());
}

/* 输出:
true
false
true
true
*/

123是的子字符串,a123b因此该find()方法输出truematches()仅“看到” a123b与“不相同” 123,因此输出false

2020-01-10