【问题标题】:How to match the word exactly with regex?如何将单词与正则表达式完全匹配?
【发布时间】:2009-12-08 16:32:11
【问题描述】:

我可能问错了这个问题,但我想做的是:

给定一个可能有数百行长的大字符串,匹配并准确替换一个单词,并确保它不会替换和匹配任何其他字符串的任何部分。

例如:

要查找的字符串 = Mac Apple 微软 Matt Damon I.B.M. Hursley 替换字符串 = MacO AppleO MicrosoftO MattDamonP I.B.M.O HursleyL 输入字符串(为清楚起见,包含一些转义字符)= "用于测试是否发现不同的文件\r\n 像 Mac、Apple 和 Microsoft 这样的小东西。\n 赫斯利的 I.B.M. 确实总结了一些很酷的东西!哇,看起来是“马特·达蒙”\r\n 测试会出错的东西Mac"\n

输出

"一个文件来测试它是否发现不同 MacO、AppleO 和 MicrosoftO 之类的零碎东西。 Hursley 的 I.B.M.O 确实总结了一些很酷的东西!哇,看起来是“Matt DamonP” 测试会出错的东西Mac"

我尝试过使用单词边界使用正则表达式,尽管这会在最后一行找到'whichwhillerrorMacO'

我也尝试使用StringTokenizer 类和各种分隔符来尝试替换单词,但我尝试替换的一些单词包含这些分隔符。

有没有正则表达式可以解决这个问题?

【问题讨论】:

  • 您希望有多少种不同的“要查找的字符串”和“替换字符串”?我认为无论哪种方式我的答案都是相同的,但我想我会检查一下。 :)
  • 我仍然没有解决这个问题,但只需对每个单词进行相等性检查,虽然它需要很长时间。不知道这样的问题能不能解决。

标签: java regex string string-search


【解决方案1】:

\b(Mac|Apple)\b 替换为\$1O\ 不会触及whichwillerrorMac - 但它会匹配whichwill-Mac

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多