我已经在网上搜索了我的问题,但没有得到完全符合我要求的答案。我的字符串如下:
A|B|C|The Steading\|Keir Allan\|Braco|E
我的输出应该如下所示:
A
B
C
The Steading|Keir Allan|Braco
E
我的要求是,如果分隔符前面有转义序列,则跳过该分隔符。我在String.split()
中尝试了以下使用负lookbehinds的方法
(?<!\\)\|
但是,我的问题是分隔符将由最终用户动态定义,它不需要总是|
。它可以是键盘上的任何字符(没有限制)。因此,我怀疑对于regex中不允许的一些特殊字符,上述正则表达式可能会失败。
我只想知道这是不是最好的方法。
发布于 2018-08-04 07:43:13
我知道这是一个旧的线程,但是lookbehind解决方案有一个问题,它不允许转义字符的转义(拆分不会发生在A|B|C|The Steading\\|Keir Allan\|Braco|E)
上)。
线程Regex and escaped and unescaped delimiter中的正匹配解决方案工作得更好(如果分隔符是动态的,则使用Pattern.quote()
进行修改)。
https://stackoverflow.com/questions/18677762
复制相似问题