gpt4 book ai didi

python - 匹配一个单词中的多个双字符 - Python regex

转载 作者:行者123 更新时间:2023-12-03 23:47:15 24 4
gpt4 key购买 nike

我想识别具有 2 组双字母的单词(在字典结构中)。

我是 Python/regex 的新手 - 但已经设法从网站上其他地方的一些类似问题中收集几乎存在的代码。但它并不完全有效。

它选择两组 double ,但前提是它们是相同的字母,如果分开,它就会选择它们。我认为\1 的第二次使用是问题所在,并且仅当它与第一个捕获组的字母相同时才有效。使用 regex101 确认了这一点,但不确定如何调整 regex 以获得正确的匹配。

任何指向我出错的地方的指示将不胜感激。

#logic being [any letter]* [any letter repeated] [any letter]* [any letter repeated] [any letter]* 

import json
import re

dict_data = {"hello":0, "aaoo":0, "aabaa":0, "aaaba":0, "bookkeeping":0, "bookkeeooping":0}
for key in dict_data:
if re.search(r'\b.*(.)\1.*(.)\1.*\b', key):
print("Match found: ", key)
else:
print("No match: ", key)

输出是:
No match:     hello
No match: aaoo #This should work but doesn't
Match found: aabaa #This works
Match found: aaaba #This shouldn't, assume it is matching either 2nd&3rd a or 3rd&4th a
No match: bookkeeping #This should match but doesn't
Match found: bookkeeooping #This works, assume it is matching oo twice

最佳答案

第二个\1引用第一个捕获组的值,而您需要引用第二个组的值,使用 \2 .
re.search在输入字符串中的任何位置搜索正则表达式匹配,您不需要 .*在输入的两端。


dict_data = {"hello":0, "aaoo":0, "aabaa":0, "aaaba":0, "bookkeeping":0, "bookkeeooping":0}
for key in dict_data:
if re.search(r'(.)\1.*(.)\2', key):
print("Match found: ", key)
else:
print("No match: ", key)

Python demo屈服
No match:     hello
Match found: aaoo
Match found: aabaa
No match: aaaba
Match found: bookkeeping
Match found: bookkeeooping

关于python - 匹配一个单词中的多个双字符 - Python regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61900765/

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