我需要替换一些特定的单词。
例如,如果我的文字有
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)
标志,这会使您的正则表达式不区分大小写。
现在考虑更换he
she
但是也he/she
she/he
与he/she
。代表这种情况的正则表达式看起来像s?he(/s?he)?
所以尝试
replaceAll("(?i)\\bs?he(/s?he)?\\b","He/She");