gpt4 book ai didi

java - 如何让 Java 检测反向引用,同时尊重字边界?

转载 作者:行者123 更新时间:2023-11-30 06:34:01 25 4
gpt4 key购买 nike

我的任务是创建一个正则表达式,用它可以检测多次出现的同一个单词,并将它们全部替换为第一次出现的单词。

到目前为止我想到的是:(\\b\\w+\\b)\\s{1}\\1

但是,这会检测到例如赛马中的第二匹。我只想检测完全匹配,即我希望尊重我提供的单词边界。

令我惊讶的是, (\\b\\w+\\b)\\s{1}\\1 似乎与 \\b(\\w+ )\\b\\s{1}\\1

一些替换示例:

再见再见世界世界世界 -> 再见再见世界
Sam 去了他的公司 -> Sam 去了他的公司
Reya 是 Eye Eye 游戏中最好的玩家 -> Reya 是 Eye Eye 游戏中最好的玩家

但是上面三个工作正常:

in inthe 变为 inthe 而不是 in inthe。我应该修改什么才能尊重单词边界?

enter image description here

最佳答案

重复单词边界:

"\\b(\\w+)\\s\\1\\b"
^^^

请参阅\b(\w+)\s\1\b regex demo .

将单词边界模式放入捕获组中这一事实并不意味着单词边界语义是通过反向引用传递的。反向引用仅存储捕获的文本值,而不存储其匹配的上下文。

此外,模式中隐式存在一些单词边界:\w+\s 之间以及 \s 之间\1 (空格是非单词字符)。因此,您只需要在前面添加一个 \b,在模式末尾添加一个 \b

关于java - 如何让 Java 检测反向引用,同时尊重字边界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45509395/

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