[英]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.