如何用|拆分字符串但不是用\\ |

时间:2015-04-17 09:59:35

标签: java regex

我有一个字符串如下

"value1|value2,value3|value4\\|value5"

我需要通过|将此字符串拆分为多个部分字符。但是如果在|之前传递了转义(作为\ |)然后我不想在那里拆分它。是否有一个简单的正则表达式可以做到这一点。

2 个答案:

答案 0 :(得分:3)

你需要使用负面的lookbehind断言。

"(?<!\\\\)\\|"

在正则表达式中使用四个反斜杠来匹配单个反斜杠字符。

示例:

String s = "value1|value2,value3|value4\\|value5";
String parts[] = s.split("(?<!\\\\)\\|");
System.out.println(Arrays.toString(parts));

输出:

[value1, value2,value3, value4\|value5]

答案 1 :(得分:3)

你应该匹配所有而不是试图分裂:

(?:[^|\\\\]+|\\\\.)+

regex101 demo

ideone demo