【问题标题】:How can I index a specific word in a String in Java?如何在 Java 中对字符串中的特定单词进行索引?
【发布时间】:2016-10-27 19:34:35
【问题描述】:

我想替换 Java 字符串中所有出现的特定单词。例如,我想将以下字符串中的所有cat 替换为cat。我尝试通过将模式设置为\\bcat\\b 来实现正则表达式,但它似乎不适用于下划线等非字母数字字符的情况。

cat catabolic_cat_4cat,6cat

如何创建一个正则表达式来排除单词周围的所有非字母数字字符并输出如下字符串: c*t catabolic_c*t_4cat,6cat

【问题讨论】:

    标签: java regex


    【解决方案1】:

    您可以像这样将单词边界字符类替换为您自己制作的类,并且(根据 Andreas 的建议)使用环视来防止在替换中捕获周围的字符。

    (?<=^|[^a-zA-Z0-9])cat(?=[^a-zA-Z0-9]|$)
    

    【讨论】:

    • 你要先行/后行,否则非单词字符也会被替换。
    • 感谢您的回复。但是,实际上这个是行不通的
    • 好点安德烈亚斯我已经更新了我的答案。 @WangNick 想详细说明具体问题是什么,还是只是替换了多余的字符?
    • 这可能会更好:(?&lt;=^|[^a-zA-Z0-9])cat(?=[^a-zA-Z0-9]|$)
    • 可能。不确定是否有任何时髦的案例/字符我会因为只包括开始/结束锚而丢失。我想非字母数字类几乎可以处理这些。
    【解决方案2】:

    如何使用这个内置的 String 函数让你的代码更简洁:

     String.replaceAll("oldText","newText");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 2021-05-22
      • 2020-07-18
      • 2013-09-06
      • 2019-01-11
      相关资源
      最近更新 更多