gpt4 book ai didi

java - 替换字符串以与条件完全匹配

转载 作者:行者123 更新时间:2023-11-30 01:53:45 26 4
gpt4 key购买 nike

示例字符串

astabD (tabD) tabD .tabD tabD. (tabD tabD)

对于上面字符串中除第一个和第二个之外的每个出现的地方,我需要将 tabD 替换为类似于 temp.tabD 的内容。

为此,我尝试使用单词边界替换所有

str.replaceAll("\b"+ "tabD" + "\b","temp.tabD"))

除第二次出现外均有效。如果有任何帮助,我们将不胜感激,因为“(”和“)”也是关键字,只需忽略两者的出现。

最佳答案

您可以使用

.replaceAll("\\b(?<!\\((?=\\w+\\)))tabD\\b", "")

或者,如果 tabD来自用户输入:

String s = "astabD (tabD) tabD .tabD tabD. (tabD tabD)";
String word = "tabD";
String wordRx = Pattern.quote(word);
s = s.replaceAll("(?<!\\w)(?<!\\((?=" + wordRx + "\\)))" + wordRx + "(?!\\w)", "");

请参阅regex demo .

详细信息

  • \b - 单词边界( (?<!\w) 是明确的左单词边界)
  • (?<!\((?=\w+\))) - 如果在当前位置之前有 ( 则表示匹配失败的负向后查找。后跟 1+ 个单词字符(\w+ 需要匹配 tabD 单词),后跟 ) (注意:如果您的 IDE 告诉您 + 位于后向查找中,则这是 IDE 错误,因为 + 位于前向查找中,并且允许使用 +/* 量词在前瞻中)
  • tabD - 要查找的单词
  • \b - 单词边界( (?!\w) 是明确的右单词边界)

Java demo :

String s = "astabD (tabD) tabD .tabD tabD. (tabD tabD)";
System.out.println(s.replaceAll("\\b(?<!\\((?=\\w+\\)))tabD\\b", ""));
// => astabD (tabD) . . ( )

关于java - 替换字符串以与条件完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55177639/

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