Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 匹配集合中的重复字符_Python_Regex_String - Fatal编程技术网

Python 匹配集合中的重复字符

Python 匹配集合中的重复字符,python,regex,string,Python,Regex,String,是否可以只匹配集合[0-9a-f]中的一个重复字符,这样它只匹配44444或aaaaaaa等大小写,而不匹配bc657ff等随机字符的大小写?您可以使用捕获组和反向引用执行以下操作: from re import search import random while True: r = ''.join(random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits) for _ in range(

是否可以只匹配集合[0-9a-f]中的一个重复字符,这样它只匹配44444或aaaaaaa等大小写,而不匹配bc657ff等随机字符的大小写?

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

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]参数表示第一个匹配存储在第一个捕获组中\然后,1是指第一个捕获组的反向引用,之后{4,}将该捕获组重复至少4次,第一次已匹配,因此需要从5中减去1。

@AshwiniChaudhary Sorry^@AshwiniChaudhary非常正确。当我输入解释时,我往往会忘记这一点=/谢谢@杰瑞:你可以在发帖前测试答案中的代码@PM2Ring在做了这么多次之后,我倾向于认为它在没有测试的情况下自动工作;我知道这很糟糕,但有时像这样的单句话无法通过控制测试:s@Jerry:墨菲定律说,如果你不进行测试,你肯定会把事情搞砸对于这样的小代码,在交互式解释器中进行测试非常容易,因此您不会意外地做一些愚蠢的事情。FWIW,我遵循doc的建议,始终为正则表达式使用原始字符串,即使它不是必需的,只是为了在字符串包含反斜杠时不会忘记它。
if search(r'([0-9a-f])\1{4,}', r):
    print('Found')