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)获得匹配. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |