Использовать утверждения соответствия нулевой ширины:
String str = "la$le\\$li$lo";
System.out.println(java.util.Arrays.toString(
str.split("(?<!\\\\)\\$")
)); // prints "[la, le\$li, lo]"
Регулярное выражение по существу
(?<!\\)\$
Он использует отрицательный взгляд назад, чтобы утверждать, что нет предшествующего \
.
Смотри также
Больше примеров разбиения на утверждения
Простое разбиение предложения с сохранением знаков препинания:
String str = "Really?Wow!This.Is.Awesome!";
System.out.println(java.util.Arrays.toString(
str.split("(?<=[.!?])")
)); // prints "[Really?, Wow!, This., Is., Awesome!]"
Разделение длинной строки на части фиксированной длины, используя \G
String str = "012345678901234567890";
System.out.println(java.util.Arrays.toString(
str.split("(?<=\\G.{4})")
)); // prints "[0123, 4567, 8901, 2345, 6789, 0]"
Использование комбо lookbehind / lookahead:
String str = "HelloThereHowAreYou";
System.out.println(java.util.Arrays.toString(
str.split("(?<=[a-z])(?=[A-Z])")
)); // prints "[Hello, There, How, Are, You]"
Похожие вопросы