【问题标题】:How to replace only tokens, an no substrings?如何仅替换标记,没有子字符串?
【发布时间】:2013-04-04 16:34:27
【问题描述】:

我正在寻找一种方法来仅替换完整标记,而不是标记的子字符串,例如:

String test = "a | ab & c | a";

现在我想用其他任何东西替换“a”,但这应该只替换“a”,而不是“ab”。

test.replace("a", "1"); //would result: "1 | 1b & c | 1"

我怎样才能只替换“完整的单词”?

顺便说一下,特殊字符“|”之间的标记替换或“&”来自:

\\s*[|&][|&\\s]*

这是我用来分隔它们的正则表达式。也许我可以再次使用这个正则表达式来替换??

【问题讨论】:

  • 在这种情况下你可以使用test.replace("a ", "1 ");
  • 令牌的区别是什么?空白?标点符号?
  • 以上更新:我的分隔符是一个或多个字母表:“|&”

标签: java regex replace


【解决方案1】:

您可以使用带有单词边界 (\b) 的正则表达式,它只会替换“孤立”as:

test.replaceAll("\\ba\\b", "1");

例子:

String test = "a | ab & c | a";
System.out.println(test.replaceAll("\\ba\\b", "1"));

打印1 | ab & c | 1

【讨论】:

    【解决方案2】:

    test.replaceFirst("a", "1"); 怎么样?

    【讨论】:

    • 我想替换所有出现的单个“a”,更新了我的示例以使其更清晰。
    猜你喜欢
    • 2018-03-26
    • 2011-07-16
    • 2022-01-11
    • 2014-05-18
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    相关资源
    最近更新 更多