gpt4 book ai didi

python - 如何使用正则表达式仅保留前n个重复单词

转载 作者:行者123 更新时间:2023-12-01 00:43:03 25 4
gpt4 key购买 nike

如果我有一个输入句子

input = 'ok ok, it is very very very very very hard'

我想要做的是只保留任何重复单词的前三个副本:

output = 'ok ok, it is very very very hard'

如何使用 python 中的 reregex 模块实现此目的?

最佳答案

一种选择可能是使用带有反向引用的捕获组并在替换中使用它。

((\w+)(?: \2){2})(?: \2)*

说明

  • (捕获组 1
    • (\w+)捕获组 2,匹配 1+ 个单词字符(示例数据仅使用单词字符。为确保它们不是较大单词的一部分,请使用单词边界 \b )
    • (?: \2){2}重复 2 次,匹配一个空格和对组 2 的反向引用。您可以使用 [ \t]+ 而不是单个空格。匹配 1+ 个空格或制表符或使用 \s+匹配 1 个以上空白字符。 (请注意,这也会匹配换行符)
  • )关闭第 1 组
  • (?: \2)*匹配 0+ 次空格和对第 2 组的反向引用,以匹配要删除的相同单词

Regex demo | Python demo

例如

import re

regex = r"((\w+)(?: \2){2})(?: \2)*"
s = "ok ok, it is very very very very very hard"
result = re.sub(regex, r"\1", s)

if result:
print (result)

结果

ok ok, it is very very very hard

关于python - 如何使用正则表达式仅保留前n个重复单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57192029/

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