正则表达式根据确切的字符拆分,除非在它之前用反斜杠转义

regex split based on exact character except when escaped with a backslash before it

需要使用分隔符拆分字符串,但前提是分隔符前没有反斜杠。

例如:如果有 abc \:abc - 不要拆分它,因为 : 前面有反斜杠。

如果字符串是 abc : abc - 需要拆分为 abc, abc

分隔符可以是:,|,&

使用回顾作为拆分表达式:

String input = "abc \:abc def : def";
String[] parts = input.split("(?<=[^\\]):");
                                    ^^^^ split on any non-slash
                                         followed by delimiter

IDEOne

使用负面回顾(?<!...)。要匹配文字反斜杠 \,您必须转义两次。一次转义是因为它是一个字符串文字,一次是因为它是一个正则表达式转义字符。

String[] parts = string.split("(?<!\\)[:,|&]");