gpt4 book ai didi

用于替换精确匹配的Java正则表达式

转载 作者:行者123 更新时间:2023-12-02 07:49:57 26 4
gpt4 key购买 nike

我的 java 应用程序正在尝试修改文件中的以下行:

static int a = 5;

目标是用“mod_a”替换“a”。

使用简单的 string.replace(var_name, "mod"+ var_name) 可以得到以下结果:

stmod_atic int mod_a = 5;

这完全是错误的。谷歌搜索我发现你可以在前面添加“\b”,然后 var_name 必须代表单词的开头,但是,string.replace("\\b"+ var_name, "mod"+ var_name) 绝对没有做任何事情:(

(我还用“\b”而不是“\b”进行了测试)

最佳答案

  • \b 这里是 regular expression意思是单词边界,所以这几乎就是你想要的。
  • String.replace() 使用正则表达式(因此\b将仅匹配文字\b)。
  • String.replaceAll() 是否使用正则表达式
  • 您还可以在变量之前和之后使用 \b both,以避免将“aDifferentVariable”替换为“mod_aDifferentVariable”。

所以可能的解决方案是这样的:

String result = "static int a = 5;".replaceAll("\\ba\\b", "mod_a");

或更一般的:

static String prependToWord(String input, String word, String prefix) {
return input.replaceAll("\\b" + Pattern.quote(word) + "\\b", Matcher.quoteReplacement(prefix + word));
}

请注意,我使用 Pattern.qoute() 以防 word 包含任何在正则表达式中有意义的字符。出于类似的原因Matcher.quoteReplacement()用于替换字符串。

关于用于替换精确匹配的Java正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11667540/

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