繁体   English   中英

Java Regex OR运算符无法正常运行

[英]Java Regex OR operator not working properly

我有这个字符串:

String test1=":test:block1:%a1%a2%a3%a4:block2:BL";

String test2=":test:block2:BL:block1:%a1%a2%a3%a4";

我创建了一个正则表达式模式以隔离此字符串

 block1:%a1%a2%a3%a4:

从字符串的其余部分开始,让这些字符串像这样:

in the case of test1="block1:%a1%a2%a3%a4:"; (with ':' at the end)
in the case of test2=":block1:%a1%a2%a3%a4"; (with ':' at the beggining)

我创建的正则表达式是:

"(block1:(.*?):|:block1:(.*))";

随着test1工作,但与test2正在检索我这︰

block1:%a1%a2%a3%a4:block2:BL";

有人可以帮我吗?

干杯!

您可以使用

block1:([^:]*)

它匹配block1:文本,然后捕捉到第1组的任何0或大于其他字符:

参见Java演示

String patternString = "block1:([^:]*)";
String[] tests = {":test:block1:%a1%a2%a3%a4:block2:BL",
                  ":test:block2:BL:block1:%a1%a2%a3%a4"};
for (int i=0; i<tests.length; i++)
{
    Pattern p = Pattern.compile(patternString, Pattern.DOTALL);
    Matcher m = p.matcher(tests[i]);
    if(m.find())
    {
        System.out.println(tests[i] + " matched. Match: " +
                    m.group(0) + ", Group 1: " + m.group(1));
    }
}

输出:

:test:block1:%a1%a2%a3%a4:block2:BL matched. Match: block1:%a1%a2%a3%a4, Group 1: %a1%a2%a3%a4
:test:block2:BL:block1:%a1%a2%a3%a4 matched. Match: block1:%a1%a2%a3%a4, Group 1: %a1%a2%a3%a4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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