如果尝试一个模式,如何检查多模式正则表达式的字符串不是单个模式,但我需要它用于多模式,我试过但它不起作用。 当我运行这些代码时,我可以得到它们中的一个(时间或价格),但是当我将它们组合起来时,不会向我显示任何输出。
感谢您的帮助......
这是我的代码:
String line = "This order was places for QT 30.00$ ! OK? and time is 2:45";
String pattern = "\\d+[.,]\\d+.[$]"+"\\d:\\d\\d";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
} else {
System.out.println("NO MATCH");
}
答案 0 :(得分:7)
“+”运算符不会分隔模式 - 它会连接字符串。
您可以做的是提供一个接受两组之间字符的模式。
String pattern = "(\\d+[.,]\\d+.[$]).*(\\d:\\d\\d)";
上面的括号是可选的。如果包含它们,您可以将匹配的价格和时间作为单独的字符串:
if (m.find( )) {
System.out.println("Found value: " + m.group(1) + " with time: " + m.group(2));
}
修改强>
刚刚注意到你的评论,你正在寻找OR,而不是和。
您可以使用X | Y
形式的表达式
String pattern = "\\d+[.,]\\d+.[$]|\\d:\\d\\d";
这将匹配价格或时间,以先发生者为准。您可以通过m.group(0)
获得匹配。