繁体   English   中英

Java 模式和匹配器无结果

[英]Java Pattern and Matcher no result

我正在编写这个 Java 程序是为了好玩,我正在尝试使用正则表达式获取 substring 组。 我的字符串是从文件中读取的,类似于:

\t<firstName type="String">John</firstName>

其中 \t 是一个制表符。

我编写了这段代码来隔离所需的 substring,但是在在线测试时它可以工作,在我的代码中它说“不匹配”。

try {
    Pattern r = Pattern.compile(".+<(.+) type=\"(.+)\">(.+)</(.+)>");
    Matcher m = r.matcher(line);

    String name = m.group(1);
    String type = m.group(2);
    String value = m.group(3);

    System.out.println("\"" + line + "\" matched regex");
    
} catch (Exception ex){
    System.out.println("\"" + line + "\" didn't match regex");
}

我的 output 是:

"   <firstName type="String">John</firstName>" didn't match regex
"   <surname type="String">Doe</surname>" didn't match regex
"   <age type="int">18</age>" didn't match regex

你有什么线索吗?

您刚刚在这一行中创建了一个匹配器: Matcher m = r.matcher(line) 如果您打印异常,您将看到未No match found消息。

您正在使用m.group()而不调用matches()方法。

尝试这个:

try {

    Pattern r = Pattern.compile(".+<(.+) type=\\\"(.+)\\\">(.+)</(.+)>");
    Matcher m = r.matcher(line);
    if (m.matches()) {

        String name = m.group(1);
        String type = m.group(2);
        String value = m.group(3);
        System.out.println("\"" + line + "\" matched regex");
    }

} catch (Exception ex) {
    System.out.println("\"" + line + "\" didn't match regex");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM