【发布时间】:2018-03-20 15:11:54
【问题描述】:
我有一个这样的字符串:
"tag0 tag1 yellow\ green tag2"
我想在每个没有转义的空格之后拆分它,所以我得到了这个结果:
result[0] = "tag0"
result[1] = "tag1"
result[2] = "yellow\ green"
result[3] = "tag2"
有什么功能可以为我做到这一点吗?带有正则表达式 "[^\\] " 的 string.split() 也会删除最后一个字符,这是我想避免的。这就是我使用 string.split 和 "[^\\] " 得到的:
result[0] = "tag"
result[1] = "tag"
result[2] = "yellow\ gree"
result[3] = "tag2"
【问题讨论】:
-
使用负前瞻,但不能保证前面的反斜杠本身不是转义的反斜杠。
-
@anubhava
(?<!(?:\\{2}){0,9999}\\)\h+假设反斜杠可能在空格之前的反斜杠之前。 -
@AniketSahrawat 它不适用于 regex101,它是一个不同的 regex 引擎。将其复制粘贴到您的 java 代码中并转义每个反斜杠
-
@ctwheels 你是说
(?<!(?<!\\)(?:\\{2}){0,9999}\\)\h+吗?