请原谅再次询问相同的正则表达式问题,但在此结合所有现有答案并不能给我带来好结果。
在Java中(如“aa | bb”.split(myregex))我需要将字符串拆分一次“|”其他时间由“||”。
请注意“|”不得与“||”的外观相匹配或“|||”。例如,“|”的正则表达式一定不要碰“aa || bb”。但是“||”的正则表达式应该将所有“||”+分开,如“aa || bb”和“aa |||| bb”一样。 我尝试了不同的\ b(?:( [\ |])(?!\ 1))+ \ b的变体,但这对于在线正则表达式检查器有不好的结果。
请帮忙。与我们分享两个正则表达式。
此致
答案 0 :(得分:0)
两次迭代?
result1 = myString.split("[^\\|]\\|[^\\|]"); // result of splitting on |, regex means | not followed by another | or preceded
result2 = result1.split("\\|{2,}"); // result of splitting on | that occurs 2 or more times
不确定如何拆分| -es的奇数,但是如果你只需要偶数:
result2 = result1.split("(\\|\\|)+"); // result of splitting on || that occur any times
也许更具可读性:
String not(String s){
return "[^" + s + "]";
}
String pipe = "\\|";
result1 = myString.split(not(pipe) + pipe + not(pipe));
result2 = result1.split(pipe + "{2,}");
答案 1 :(得分:0)
怎么样:
(?:(?<!\\|)\\|(?:\\|)|\\|{2,})
这将匹配不在其他管道之前或之后的管道或大于或等于2的管道数。