【问题标题】:Java very simple regular expression puzzleJava 非常简单的正则表达式拼图
【发布时间】:2011-10-31 04:06:29
【问题描述】:

我知道Java正则表达式可以通过Stringmatches便捷方法访问,或者走很长的路并制作Pattern等。所以,下面的代码应该真的打印2“是的! "到输出的行。它打印“是!”行和“否”行。我错过了什么?

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");
    }

}

}

输出:

Yes!
no

Win7 64 位上的 Java 版本 1.6。

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

【问题讨论】:

    标签: java regex


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-28
        • 2011-02-02
        • 2015-06-23
        • 1970-01-01
        • 2013-08-17
        相关资源
        最近更新 更多