[英]Java Regular Expression Group OR Operator
我正在使用java.util.regex
并且在构造正则表达式时会遇到困难,该正则表达式将提取此类文本:
Manufacturer : ABC Inc. Price : ...
Manufacturer : ABC Inc. Quantity : ...
我想要的是公司名称,该名称来自文本Manufacturer :
后面的不同文本,但是它可能遵循Price
或Quantity
,我不知道该如何在Java中实现。
到目前为止,我所做的是:
Pattern.compile("Manufacturer #:(.*)Price")
Pattern.compile("Manufacturer #:(.*)Quantity")
我可以使用提取括号中的部分
Pattern mypattern = Pattern.compile("Manufacturer #:(.*)Price");
Matcher mymatcher = mypattern.matcher("Manufacturer #: ABC company Price");
if (mymatcher.find()) {
WhatIWant = mymatcher.group(1);
}
但是我不知道如何将它们组合在一起,我尝试使用Manufacturer #:(.*)Price|Quantity
,但似乎不起作用。
任何帮助,将不胜感激!
更新:我只是意识到文本的下面,有一些price
和quantity
,其中*
搜索会吃掉整个文本...
您可以尝试使用惰性 (.*?)
和忽略大小写 。
Pattern mypattern =
Pattern.compile("Manufacturer\\s*#?:\\s*(.*?)\\s*(Price|Quantity)",
Pattern.CASE_INSENSITIVE);
Matcher mymatcher = mypattern.matcher("Manufacturer #: ABC company Price");
if (mymatcher.find()) {
System.out.println(mymatcher.group(1)); // ABC company
}
注意:匹配多行
Pattern mypattern =
Pattern.compile("Manufacturer\\s*#?:\\s*(.*?)\\s*(Price|Quantity)",
Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
从索引1获取匹配的组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.