gpt4 book ai didi

Java正则表达式replaceAll()与前瞻

转载 作者:行者123 更新时间:2023-12-01 04:25:32 27 4
gpt4 key购买 nike

我对在 java 中使用正则表达式还很陌生。我的动机是用反斜杠转义所有出现的“*”。这是我尝试过的声明:

String replacementStr= str.replaceAll("(?=\\[*])", "\\\\");

但这似乎不起作用。经过一番修改后,发现这确实有效。

String replacementStr= str.replaceAll("(?=[]\\[*])", "\\\\");

根据我对正则表达式的了解,我认为“[]”代表一个空字符类。我在这里错过了什么吗?有人可以帮我理解这一点吗?

注意:我尝试的动机是学习使用正则表达式的前瞻功能。虽然问题中所述的目的并不保证使用前瞻,但我只是试图将其用于教育目的。抱歉没说清楚!

最佳答案

当某些元字符放在括号内时,不需要转义。

换句话说,我不知道你的意思是否是用\*转义*。在这种情况下,请尝试以下操作:

String newStr = str.replace("*", "\\*");

编辑:您的正则表达式中有一些奇怪的东西。

  • (?=\[*]) 向前查找字符 [(0 次或多次),后跟 ]<

Regular expression visualization

  • (?=[]\[*]) 向前查找接下来的字符之一:[, ], *

Regular expression visualization

也许您正在寻找的正则表达式如下:

(?=\*)

在 Java 中,“(?=\\*)”

关于Java正则表达式replaceAll()与前瞻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18545299/

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