gpt4 book ai didi

regex - 如何确定正则表达式中的重复次数?

转载 作者:行者123 更新时间:2023-12-01 09:36:26 25 4
gpt4 key购买 nike

假设我想使用正则表达式将 string 1 的任意数量的重复替换为相同数量的 string 2 的重复。例如,string 1 = "apple",string 2 = "orange"。

我想象的是这样的:

s/apple{2,}/orange{N}/

但我不知道如何指定 N 来匹配 apple 的重复次数。这可能吗?

注意:正如 xhienne 所指出的,我正在寻找重复项,因此 string 1 至少出现两次。

示例输入:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 苹果 Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 appleappleapple Excepteur sint occaecat cupidatat non proident, appleappleappleapple sunt in culpa qui officia deserunt mollit anim id est laborum.

示例输出:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 苹果 Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 orangeorangeorange Excepteur sint occaecat cupidatat non proident, orangeorangeorangeorange sunt in culpa qui officia deserunt mollit anim id est laborum.

最佳答案

一个可能的解决方案是使用支持 \G operator 的正则表达式:

(?:\G(?!\A)|(?=(?:apple){2}))apple

参见 regex demo

详情

  • (?:\G(?!\A)|(?=(?:apple){2})) - 匹配两个备选方案之一的非捕获组:
    • \G(?!\A) - 上一次成功匹配的结尾(从 \G 中减去字符串位置的开始)
    • | - 或者
    • (?=(?:apple){2}) - 字符串中的一个位置,后跟两次 apple 子字符串
  • apple - apple 子字符串。

请注意,正则表达式不需要计算太多,它只是找到一个字符串重复 2 次的地方,然后,它替换所有连续的、相邻的匹配项。

关于regex - 如何确定正则表达式中的重复次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52680187/

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