使用零宽度匹配断言:
String str = "la$le\$li$lo"; System.out.println(java.util.Arrays.toString( str.split("(?<!\\)\$") )); // prints "[la, le$li, lo]"正则表达式本质上是
(?<!\)$
它使用负向后看来断言没有在前
。也可以看看
- Regular-expressions.info/解决方法
断言分裂的更多示例
简单的句子拆分,保留标点符号:
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]"使用后向/超前组合:
String str = "HelloThereHowAreYou"; System.out.println(java.util.Arrays.toString( str.split("(?<=[a-z])(?=[A-Z])") )); // prints "[Hello, There, How, Are, You]"


