java - ReplaceAll 也替换斜杠之前和之后的完整单词

标签 java regex replaceall

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

例如,如果我的文本有

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 文件获取源代码。所以第一次它工作得很好。我的意图是,如果我在修改后的文件上再次运行代码,它不应该改变任何内容。

如何解决这个问题?

最佳答案

开始时的一些提示:

  1. he she 可以用 s?he 重新表示(其中 s 是可选的),所以你不需要he|she(这会让事情变得更短并且同样简单)。

  2. 您还可以使用 (?i) 标志,这将使您的正则表达式不区分大小写。

现在考虑更换其中一个

而且

  • 他/她
  • 她/他

他/她。表示这种情况的正则表达式可能类似于 s?he(/s?he)?

所以尝试一下

replaceAll("(?i)\\bs?he(/s?he)?\\b","He/She");

关于java - ReplaceAll 也替换斜杠之前和之后的完整单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29600840/

相关文章:

java - 正在解析 onAction ='#initialize' ,事件处理程序不在命名空间中或者脚本中存在错误

java - 如何提取字符串的特定部分并用相同的提取值替换,但在不同的情况下 - 使用java

java - 替换和替换全部的区别

java - 在 shell 脚本中运行命令

java - 将两个 Activity JPanel 层叠在一起

java - 通知栏-点击时,如何打开指定位置的文件资源管理器

python - 在 df 列上迭代不同的正则表达式模式

java - 如何返回从字符串中的某个索引开始的 float ?

正则表达式 - 查找首字母大写的整个句子

java - 使用正则表达式中的反向引用动态替换文本