加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何使用多种不同的模式?

发布时间:2020-12-15 04:09:46 所属栏目:Java 来源:网络整理
导读:如果尝试一个模式,如何检查多模式正则表达式的字符串不是单个模式,但我需要它为多模式,我尝试但它不起作用. 当我运行这些代码时,我可以得到它们中的一个(时间或价格),但是当我将它们组合起来时,不会向我显示任何输出. 谢谢你的帮助…. 这是我的代码: String
如果尝试一个模式,如何检查多模式正则表达式的字符串不是单个模式,但我需要它为多模式,我尝试但它不起作用.
当我运行这些代码时,我可以得到它们中的一个(时间或价格),但是当我将它们组合起来时,不会向我显示任何输出.

谢谢你的帮助….

这是我的代码:

String line = "This order was  places for QT 30.00$! OK? and time is 2:45";
      String pattern = "d+[.,]d+.[$]"+"d:dd";

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

解决方法

“”运算符不会分隔模式 – 它会连接字符串.

你可以做的是提供一个接受两组之间字符的模式.

String pattern = "(d+[.,]d+.[$]).*(d:dd)";

上面的括号是可选的.如果包含它们,您可以将匹配的价格和时间作为单独的字符串:

if (m.find( )) {
     System.out.println("Found value: " + m.group(1) + " with time: " + m.group(2));
 }

编辑:

刚注意到你的评论,你正在寻找OR,而不是和.

您可以使用X |形式的表达式来完成此操作Y:

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

这将匹配价格或时间,以先发生者为准.你可以通过m.group(0)获得匹配.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读