我需要替换一些特定的单词。

例如,如果我的文字有

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");

09-26 20:05