gpt4 book ai didi

java正则表达式去除重复单词

转载 作者:行者123 更新时间:2023-12-01 17:59:55 25 4
gpt4 key购买 nike

我正在解决一个从字符串中删除重复单词的问题。例如,

输入:Goodbye bye bye world world world

输出:Goodbye bye world

我从在线资源中获得了工作模式,但我无法理解其中的所有内容。

    String pattern = "\\b(\\w+)(\\b\\W+\\b\\1\\b)*";

这是我的理解:

  1. 初始\\b是匹配单词边界
  2. (\\w+)匹配一个或多个字符
  3. 在此表达式中:(\\b\\W+\\b\\1\\b)*

    a. \\b匹配单词边界

    b. \\W+匹配一个或多个非单词字符

    c. \\b再次匹配单词边界

    d. \\1 ???我不知道这是做什么用的,但没有这个就无法工作

    c. \\b再次匹配单词边界

如您所见,我的主要困惑是关于第 3 项,尤其是 \\1 。谁能解释得更清楚一点吗?

最佳答案

使用 Java,您可以使用前瞻来使用反向引用删除前面具有相同匹配单词的所有单词:

final String regex = "\\b(\\w+)\\b\\s*(?=.*\\b\\1\\b)";
final String input = "Goodbye bye bye world world world\n";

final String result = input.replaceAll(regex, "");

此处使用单词边界很重要,以避免匹配部分单词。

RegEx Demo

关于java正则表达式去除重复单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41813879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com