在Java中,我尝试尝试使用String.split()拆分字符串的方法";",但不打开"\\\\;".(2个反斜杠后跟分号)
例:"aa;bb;cc\\;dd;ee\\;;ff"应该分成;
aa
bb
cc\\;dd
ee\\;
ff
Run Code Online (Sandbox Code Playgroud)
如何使用正则表达式完成此操作?
马库斯
Luk*_*der 10
使用
"aa;bb;cc\\;dd;ee\\;;ff".split("(?<!\\\\);");
Run Code Online (Sandbox Code Playgroud)
(?<!...)被称为"零宽度后视".在英语中,您将拆分所有不带双斜杠的;字符,而不实际匹配双斜杠.四重斜杠是将反斜杠转义为正则表达式解析器.然后,拆分中使用的实际正则表达式将读取:
(?<!\\);
Run Code Online (Sandbox Code Playgroud)
这被称为负面的lookbehind,语法就像(?<!a)b.这匹配在a之前的任何b上.你会想要这样的东西:
(?<!\\\\);
Run Code Online (Sandbox Code Playgroud)