繁体   English   中英

Java正则表达式组OR运算符

[英]Java Regular Expression Group OR Operator

我正在使用java.util.regex并且在构造正则表达式时会遇到困难,该正则表达式将提取此类文本:

Manufacturer : ABC Inc. Price : ...
Manufacturer : ABC Inc. Quantity : ...

我想要的是公司名称,该名称来自文本Manufacturer :后面的不同文本,但是它可能遵循PriceQuantity ,我不知道该如何在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 ,但似乎不起作用。

任何帮助,将不胜感激!

更新:我只是意识到文本的下面,有一些pricequantity ,其中*搜索会吃掉整个文本...

您可以尝试使用惰性 (.*?)忽略大小写

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM