Java正则表达式组或运算符

Java正则表达式组或运算符,java,regex,Java,Regex,我正在使用java.util.regex,我很难构造一个正则表达式来提取这种类型的文本: Manufacturer : ABC Inc. Price : ... Manufacturer : ABC Inc. Quantity : ... 我想要的是不同文本中的公司名称,这些文本紧跟着制造商:,但它可能紧跟着价格或数量,我真的不知道如何在Java中实现它 到目前为止我所做的: Pattern.compile("Manufacturer #:(.*)Price") Pattern.compile

我正在使用
java.util.regex
,我很难构造一个正则表达式来提取这种类型的文本:

Manufacturer : ABC Inc. Price : ...
Manufacturer : ABC Inc. 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);
}
但我不知道如何将它们组合在一起,我尝试了
制造商#:(*)价格|数量
,但似乎不起作用

任何帮助都将不胜感激

更新:我刚刚意识到,在文本的下面一段,有一些
价格
数量
,其中
*
搜索将吞噬整个文本…

您可以尝试使用Lazy
(.*)
方式以及忽略大小写

注:多行匹配

Pattern mypattern = 
         Pattern.compile("Manufacturer\\s*#?:\\s*(.*?)\\s*(Price|Quantity)",
                                   Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
从索引1中获取匹配的组


事实上,文本包含
数量
价格
,而
*
贪婪地吞噬了整个段落。正如我使用的
*?
那样,它看起来是非贪婪的。看看更新的演示。
Pattern mypattern = 
         Pattern.compile("Manufacturer\\s*#?:\\s*(.*?)\\s*(Price|Quantity)",
                                   Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);