我在java中有一个字符串,我想按照以下标准分成几部分:
即
“ABC#XYZ#KML \ #ijk”
应该分成
“abc”,“xyz”,“kml \ #ijk”
我可以使用StringTokenizer轻松完成并为转义字符添加一些逻辑,但我希望通过使用正确的正则表达式的单行String.split调用来获取它。到目前为止,我的“最佳”尝试是:
public static void main(String[] args) {
String toSplit = "abc#xyz#kml\\#ijk";
String[] arr = toSplit.split("[^\\\\]#");
System.out.println(Arrays.toString(arr));
}
结果是:
[ab,xy,kml#ijk]
前两部分的最后一个字母被删除了。
知道如何避免这种情况吗?
答案 0 :(得分:0)
你有没看过外观?
public static void main(String[] args) {
String toSplit = "abc#xyz#kml\\#ijk";
String[] arr = toSplit.split("(?<!\\\\)#");
System.out.println(Arrays.toString(arr));
}