gpt4 book ai didi

java - 在 Java 中使用正则表达式拆分具有转义序列的字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:51:47 25 4
gpt4 key购买 nike

要拆分的字符串

abc:def:ghi\:klm:nop

字符串应该根据“:”进行拆分“\”是转义符。所以“\:”不应被视为标记。

split(":") 给出

[abc]
[def]
[ghi\]
[klm]
[nop]

要求的输出是字符串数组

[abc]
[def]
[ghi\:klm]
[nop]

如何忽略\:

最佳答案

使用 look-behind assertion :

split("(?<!\\\\):")

只有在前面没有 \ 时才会匹配。需要使用双重转义 \\\\,因为字符串声明需要一个,正则表达式需要一个。

但是请注意,如果您希望 token 以反斜杠结尾,则这将不允许您转义反斜杠。为此,您必须首先将所有双反斜杠替换为

string.replaceAll("\\\\\\\\", ESCAPE_BACKSLASH)

(其中 ESCAPE_BACKSLASH 是不会出现在您的输入中的字符串)然后,在使用后视断言拆分后,将 ESCAPE_BACKSLASH 字符串替换为未转义的反斜杠

token.replaceAll(ESCAPE_BACKSLASH, "\\\\")

关于java - 在 Java 中使用正则表达式拆分具有转义序列的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3870415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com