Java非常简单的正则表达式拼图

时间:2011-10-31 04:06:29

标签: java regex

我理解Java正则表达式可以从String的{​​{1}}便捷方法访问,或者走很长的路线并制作matches等等。所以,下面的代码应该是真打印2“是的!”到输出的行。打印出“是的!”线和“不”线。我错过了什么?

Pattern

输出:

import java.util.regex.*;

public class TestRegex {
public static void main(String[] args) {
    String pattern = "html";
    String input   = "somehtml.txt";

    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(input);

    if(m.find()) {
        System.out.println("Yes!");
    }
    else {
        System.out.println("no");
    }

    if(input.matches(pattern)) {
        System.out.println("Yes!");
    }
    else {
        System.out.println("no");
    }

}

}

Win7 64位上的Java版本1.6。

C:\ Users \ Michael Smith> java -version java版“1.6.0_24” Java(TM)SE运行时环境(版本1.6.0_24-b07) Java HotSpot(TM)64位服务器VM(版本19.1-b02,混合模式)

2 个答案:

答案 0 :(得分:5)

matches()检查与正则表达式匹配的整个字符串。 find()只在字符串中的某处查找匹配项。

答案 1 :(得分:2)

String#Matches方法根据整个输入文本检查模式。这就是您的代码第二次打印no的原因。 Matcher#Find扫描输入以查找下一个匹配项 输入中的子序列。