正则表达式根据确切的字符拆分,除非在它之前用反斜杠转义
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
使用负面回顾(?<!...)
。要匹配文字反斜杠 \
,您必须转义两次。一次转义是因为它是一个字符串文字,一次是因为它是一个正则表达式转义字符。
String[] parts = string.split("(?<!\\)[:,|&]");
需要使用分隔符拆分字符串,但前提是分隔符前没有反斜杠。
例如:如果有 abc \:abc
- 不要拆分它,因为 :
前面有反斜杠。
如果字符串是 abc : abc
- 需要拆分为 abc, abc
。
分隔符可以是:,|,&
等
使用回顾作为拆分表达式:
String input = "abc \:abc def : def";
String[] parts = input.split("(?<=[^\\]):");
^^^^ split on any non-slash
followed by delimiter
使用负面回顾(?<!...)
。要匹配文字反斜杠 \
,您必须转义两次。一次转义是因为它是一个字符串文字,一次是因为它是一个正则表达式转义字符。
String[] parts = string.split("(?<!\\)[:,|&]");