所有组合的Python正则表达式迭代
我对regex不熟悉。我正在使用Python 2.7和BeautifulSoup4。我想迭代一个特定的正则表达式 所需输出: 长度:5,表达式:[a-zA-Z0-9!%@]所有组合的Python正则表达式迭代,python,regex,iteration,combinations,Python,Regex,Iteration,Combinations,我对regex不熟悉。我正在使用Python 2.7和BeautifulSoup4。我想迭代一个特定的正则表达式 所需输出: 长度:5,表达式:[a-zA-Z0-9!%@] 应尝试所有可能的组合,例如: [“aaaaa”,“aaaab”,“aaaac”,“aaaaz”,“aaaaa”,“aaaaz”,“aaaa0”,“aaaa9”,“aaaa!”,“aaaa!!”] 此外,这也应该是可能的。如果表达式为橙色\d{1} ['orangea','oranges']] 我试过这个: rege
应尝试所有可能的组合,例如:
[“aaaaa”,“aaaab”,“aaaac”,“aaaaz”,“aaaaa”,“aaaaz”,“aaaa0”,“aaaa9”,“aaaa!”,“aaaa!!”]
此外,这也应该是可能的。如果表达式为橙色\d{1}
['orangea','oranges']] 我试过这个:
regexInput = "a-z0-9"
#regexInput = "a-zA-Z0-9!@#$%^&"
comb = itertools.permutations(regexInput,passLength)
for x in comb:
''.join(x)
我意识到这是一个完全错误的方法,因为这些只是排列。请帮忙。很抱歉解释得不好,非常沮丧。置换或组合的Itertools函数将一系列元素作为第一个参数。它无法为您生成序列(从
a-z
到abc…xyz
)。幸运的是,string
提供了一些常量,如ascii_字母
,它们包含a-zA-Z
如果您的目标是解释正则表达式并生成每个案例。。。这很难,你应该解释一下原因?在我们继续之前
如果您只想获得字母组合:
import string
from itertools import combinations_with_replacement
result = combinations_with_replacement(string.ascii_letters, 5)
#comb = [''.join(n) for n in result] # warning, heavy processing
print [''.join(result.next()) for _ in range(10)]
# > ['aaaaa', 'aaaab', 'aaaac', 'aaaad', 'aaaae', 'aaaaf', 'aaaag', 'aaaah', 'aaaai', 'aaaaj']
您可以将
string.ascii_字母
替换为任何系列的字符。那么您想获得正则表达式可以生成的所有单词吗?也就是说,正则表达式可以检测到的所有单词?是的,对于这一点,我甚至不知道我在谷歌的搜索查询应该是什么。此外,它就像一本愚蠢的字典,检查所有可能的长度组合。除此之外,它还应该检查符号和数字。请不要否决投票。我正在寻求真正的帮助。如果之前问过这个问题,请将其标记为重复。如果是新的,它可能恰好是一条有趣的线索。@AakashShah如果这回答了您的问题,那么将其标记为已接受。否则,请尝试解释答案中缺少的内容。@AakashShah-我编辑了我的答案,以指出您使用itertools的错误。@Cyrbil感谢您的快速回复。你的解释完全符合我的问题。我正在制作一个验证码机器人阅读器。我需要为参考表建立一个完整的数据库。如果我可以用regex来做,我不介意让它运行几个月,直到它完成数据库文件。这就是我没有接受你答案的原因。你导入了带有替换项的组合,但将其用作itertools。带有替换项的组合