需要使用分隔符拆分字符串,但仅在分隔符之前没有反斜杠时才这样做。
例如:如果存在
如果该字符串为
分隔符可以是
例如:如果存在
abc \:abc
,请勿将其拆分为 :
由于其前面有反斜杠。如果该字符串为
abc : abc
,则需要拆分为 abc, abc
。分隔符可以是
:,|,&
等。String input = "abc \\:abc def : def";
String[] parts = input.split("(?<=[^\\\\]):");
^^^^ split on any non-slash
followed by delimiter
:abc
,你的代码不会分割它,而我的会。但这种情况可能永远不会发生。 - 4castle(?<!\\\\)
,因为它更简单,而且也适用于第一个字符作为分隔符的情况。如果你使用正向后查找,那么实际上必须有一个字符存在(我刚刚注意到4castle已经发布了这个...) - Bohemianword:
结尾,那么使用您的方法最后一个匹配项不会有分隔符吗? - Tim Biegeleisenlimit
的重载版本)。区别只存在于开始的位置,因为 ^
不会匹配一个字符的 PLB。 - Bohemian(?<!...)
。要匹配一个字面上的反斜杠\
,你需要进行两次转义。一次是因为它是字符串文字而进行转义,再一次是因为它是正则表达式转义字符。String[] parts = string.split("(?<!\\\\)[:,|&]");
abc \\: def
分解为abc \
和def
? - that other guy