匹配集合中的重复字符

时间:2014-10-02 09:47:16

标签: python regex string

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]中的一个重复字符,因此它只匹配44444aaaaaaa等字符,但不匹配bc657ff等随机字符的情况?

1 个答案:

答案 0 :(得分:3)

您可以使用捕获组和反向引用来执行以下操作:

if search(r'([0-9a-f])\1{4,}', r):
    print('Found')

此处,([0-9a-f]) parens表示第一个匹配存储在第一个捕获组中。 \1然后是引用第一个捕获组的反向引用,之后{4,}重复捕获的组至少4次(第一次已经匹配,所以你需要从5减去1) )。

相关问题