[英]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.