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);