【发布时间】:2016-10-27 19:34:35
【问题描述】:
我想替换 Java 字符串中所有出现的特定单词。例如,我想将以下字符串中的所有cat 替换为cat。我尝试通过将模式设置为\\bcat\\b 来实现正则表达式,但它似乎不适用于下划线等非字母数字字符的情况。
cat catabolic_cat_4cat,6cat
如何创建一个正则表达式来排除单词周围的所有非字母数字字符并输出如下字符串:
c*t catabolic_c*t_4cat,6cat
【问题讨论】:
我想替换 Java 字符串中所有出现的特定单词。例如,我想将以下字符串中的所有cat 替换为cat。我尝试通过将模式设置为\\bcat\\b 来实现正则表达式,但它似乎不适用于下划线等非字母数字字符的情况。
cat catabolic_cat_4cat,6cat
如何创建一个正则表达式来排除单词周围的所有非字母数字字符并输出如下字符串:
c*t catabolic_c*t_4cat,6cat
【问题讨论】:
您可以像这样将单词边界字符类替换为您自己制作的类,并且(根据 Andreas 的建议)使用环视来防止在替换中捕获周围的字符。
(?<=^|[^a-zA-Z0-9])cat(?=[^a-zA-Z0-9]|$)
【讨论】:
(?<=^|[^a-zA-Z0-9])cat(?=[^a-zA-Z0-9]|$)
如何使用这个内置的 String 函数让你的代码更简洁:
String.replaceAll("oldText","newText");
【讨论】: