gpt4 book ai didi

java - 从正则表达式中转义特殊符号

转载 作者:行者123 更新时间:2023-11-29 06:44:24 25 4
gpt4 key购买 nike

我使用这段代码:

static Pattern escaper = Pattern.compile("([^a-zA-z0-9])");

public static String escapeRE(String str) {
return escaper.matcher(str).replaceAll("\\\\$1");
}

它工作得很好,直到我不使用这个字符串:“[”。我查看了调试器,结果是没有“\\”的“]”。

System.out.println(Main.escapeRE("+"));
System.out.println(Main.escapeRE(">="));
System.out.println(Main.escapeRE("]"));
System.out.println(Main.escapeRE("["));

结果:

\\+
\\>\\=
]
[

为什么会这样?

最佳答案

您的字符类 [^a-zA-z0-9] 不正确。它应该是:[^a-zA-Z0-9](注意 A-Z 而不是 A-z)。

由于 [] 都包含在 A-z 范围内,因此它们不会被您的 escapeRE 方法。

编辑

正如@Matt 在评论中提到的:如果您试图转义 regex-meta-chars,请查看 Pattern.quote(String)专门为此目的创建的方法。

关于java - 从正则表达式中转义特殊符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7449852/

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