3

如果尝试一种模式但我需要它用于多模式并且我尝试过但它不起作用,如何检查多模式正则表达式的字符串而不是单一模式。当我运行这些代码时,我可以获得字符串中的其中一个(时间或价格),但是当我组合它们时不会显示任何输出。

感谢您的帮助....

这是我的代码:

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

1 回答 1

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,而不是 AND。

您可以使用以下形式的表达式来做到这一点X | Y

  String pattern = "\\d+[.,]\\d+.[$]|\\d:\\d\\d";

这将匹配价格或时间,以先发生者为准。您可以使用m.group(0).

于 2013-05-03T20:53:28.720 回答