gpt4 book ai didi

regex - 如何使用正则表达式识别重复字符?

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

这个问题是关于正则表达式的谜题。我有一个包含重复字符的单词列表,例如

stubbornness
raccoon
cooccurred
successful

请注意,每个术语都有两组重复的字母,例如“bb”,在“固执”中。我已经编写了我的脚本(在 ruby​​ 中),并且我能够在代码循环中使用逐字符迭代来解决我的任务。

然而,这个令人费解的任务引起了我的注意......我想知道是否可以使用正则表达式来完成?我已经咨询了正则表达式教程和其他 StackOverflow 问题,但我不知道如何报告受骗字符。这是所需的输出:
bb stubbornness
cc raccoon
oo cooccurred
cc successful

前面有第一组重复的字母。为此,我尝试编写自己的正则表达式(在 MacOS 上使用 sed;在 Ubuntu 上使用 -r 而不是 -E):
sed -E 's#(.*?)(.)\2(.*)#\2\2 \1\2\2\3#g'

但是它有一个无效的重复运算符操作数。有任何想法吗?请注意,重复字符可能位于字符串中的任何位置。

最佳答案

试试这个正则表达式:

(.*?)((\w)\3)(.*)

替换为:
\2 \1\2\4

Live Demo on Regex101

感谢 @肯特 谁告诉我 sed 不支持懒惰 .*? ,我想出了这个新的正则表达式:
(
(?!(\w)\2) # DO NOT Match if there are double letters
. # Data before dobule letters
)*
((\w)\4) # Double Letter
(.*) # Data after letters

# SHORTER REGEX (1 LINE)
((?!(\w)\2).)*((\w)\4)(.*)

替换为:
\3 \0

Live Demo on Regex101

关于regex - 如何使用正则表达式识别重复字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36338492/

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