Python 匹配集合中的重复字符
是否可以只匹配集合[0-9a-f]中的一个重复字符,这样它只匹配44444或aaaaaaa等大小写,而不匹配bc657ff等随机字符的大小写?您可以使用捕获组和反向引用执行以下操作: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(
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')