【发布时间】:2021-01-26 12:35:41
【问题描述】:
我有以下示例字符串:
A|B\|C\\|D\\\|E\\\\F
与 |是分隔符,\ 是转义字符。 正确的拆分应如下所示:
A
B\|C\\
D\\\|E\\\\
F
如果分隔符或转义符由多个字符组成,我还需要这个逻辑普遍适用。
我已经有一个在正确位置拆分的正则表达式,但它没有产生所需的输出:
正则表达式:
(?<!\Q\\E)(?:(\Q\\\E)*)\Q|\E
输出:
A
B\|C
D\\\|E
F
我通常在这里测试:https://regex101.com/,但我在 java 中工作,所以我有更多的能力。
还尝试了以下没有正面结果的方法(在网页上不起作用,但在 java 中只是不会产生所需的结果):
(?=(\Q\\\E){0,5})(?<!\Q\\E)\Q|\E
【问题讨论】:
-
你的意思是你的输入是
A|B\|C\\|D\\\|E\\\\|F? -
是的(虽然还不是字符串格式) Java 语句:"A|B\\|C\\\\|D\\\\\\|E\\\\\\\\ |F".split("proper_regex_here")
-
不要使用
split,它不会像提取方法那样稳定。
标签: java regex escaping delimiter