我正在寻找一种方法,在特定分隔符的最后出现时将String分成两部分。我知道当String看起来像这样很容易做到:
String s = "prefix.key value";
String[] a = s.split("[ :=]",2);
但按照惯例,字符串可能包含转义分隔符(直接在分隔符前面加上'\')。所以我更新了regex-String:
String s = "prefix\ key value";
String[] a = s.split("[^\\\\][ :=]",2);
这会将String拆分到几乎正确的位置,但它会切断键的“y”。这是因为现在正则表达式将分隔符与其前面的字符匹配。 split()方法会删除匹配的部分,只返回剩余的字符串。
我有一个使用split()的工作解决方案,并查看返回数组中字符串的结束字符,但这似乎是一种过于复杂和缓慢的方法。
有没有人有更好的主意?
答案 0 :(得分:1)
答案 1 :(得分:0)
我会根据stema的回答发表评论,但我还没有发表评论。我只是想对现有的正则表达式进行一些小改动。
(?<!\\)[ :=]
否则转义代码需要两个反斜杠而不是一个反斜杠。