我需要替换一些特定的单词。
例如,如果我的文本有
He needs to have java skills
我需要将其替换为
He/She needs to have java skills
我用下面的代码实现了这一点
String replacedText = originalText.replaceAll("\\bHe\\b|\\bShe\\b","He/She");
但是问题是当我再次执行代码时,输出是
He/She/He/She needs to have java skills
问题是 '\\b'
正在考虑单词完整,即使它们位于斜杠之前或之后。
更新:我从 word/excel/html 文件获取源代码。所以第一次它工作得很好。我的意图是,如果我在修改后的文件上再次运行代码,它不应该改变任何内容。
如何解决这个问题?
最佳答案
开始时的一些提示:
he
she
可以用s?he
重新表示(其中s
是可选的),所以你不需要he|she
(这会让事情变得更短并且同样简单)。您还可以使用
(?i)
标志,这将使您的正则表达式不区分大小写。
现在考虑更换其中一个
他
她
而且
他/她
她/他
与他/她
。表示这种情况的正则表达式可能类似于 s?he(/s?he)?
所以尝试一下
replaceAll("(?i)\\bs?he(/s?he)?\\b","He/She");
关于java - ReplaceAll 也替换斜杠之前和之后的完整单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29600840/