from re import search
import random
while True:
r = ''.join(random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for _ in range(random.randint(1, 100)))
if search('[0-9a-f]{5,}', r):
print('Found')
是否可以匹配集合[0-9a-f]
中的一个重复字符,因此它只匹配44444
或aaaaaaa
等字符,但不匹配bc657ff
等随机字符的情况?
答案 0 :(得分:3)
您可以使用捕获组和反向引用来执行以下操作:
if search(r'([0-9a-f])\1{4,}', r):
print('Found')
此处,([0-9a-f])
parens表示第一个匹配存储在第一个捕获组中。 \1
然后是引用第一个捕获组的反向引用,之后{4,}
重复捕获的组至少4次(第一次已经匹配,所以你需要从5减去1) )。