gpt4 book ai didi

java - 如何表示反斜杠

转载 作者:行者123 更新时间:2023-11-29 10:15:45 24 4
gpt4 key购买 nike

我想替换不在提供列表中的内容

[^-\\dA-Za-zÂÃâ`~!@#$%^&*()_+=[{]}:;<,>.?/ ]

我想在此列表中包含反斜杠 \,这样反斜杠就不会被替换。如果我这样给

.replaceAll("[^-\\dA-Za-zÂÃâ`~!@#$%^&*()_+=[{]}\\:;<,>.?/ ]","")

它没有像我预期的那样工作。

"xyda\asff"..replaceAll("[^-\\dA-Za-zÂÃâ`~!@#$%^&*()_+=[{]}\\:;<,>.?/ ]","")

Expected result :: xyda\asff
Output :: xydaasff

我不想替换 \

最佳答案

您需要应用两个 级别的转义 - 一个用于正则表达式本身,一个用于 Java 字符串文字。这意味着您需要 四个 连续的反斜杠。所以:

replaceAll("[^-\\dA-Za-zÂÃâ`~!@#$%^&*()_+=[{]}\\:;<,>.?/\\\\ ]", "")

我假设 \\d 是为了覆盖任何数字,而不是实际上d 放入列表中?

您可能会发现将模式打印到控制台最简单,这样您就可以准确地看到正则表达式引擎看到的内容,而无需相关的 Java 字符串文字转义。上面的模式是:

[^-\dA-Za-zÂÃâ`~!@#$%^&*()_+=[{]}\:;<,>.?/\\ ]

所以带反斜杠的位是:

  • \d(数字)
  • \:(冒号)
  • \\(反斜杠)

关于java - 如何表示反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18503280/

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