簡體   English   中英

所有組合的 Python 正則表達式迭代

[英]Python regex iteration for all combinations

我是正則表達式的新手。 我正在使用 Python 2.7 和 BeautifulSoup4。 我想迭代特定的正則表達式。

所需輸出:

長度:5,表達式:[a-zA-Z0-9!&#%@]

它應該嘗試所有可能的組合,例如:
['aaaaa','aaaab','aaaac',...,'aaaaz','aaaaA',...,'aaaaZ','aaaa0','aaaa9','aaaa!','AAA!! ']

此外,這也應該是可能的。 如果表達式為橙色\\d{1}

['橘子','橘子']]

我試過這個:

 regexInput = "a-z0-9"
 #regexInput = "a-zA-Z0-9!@#$%^&"
 comb = itertools.permutations(regexInput,passLength)
 for x in comb:
    ''.join(x)

我意識到這是一種完全錯誤的方法,因為這些只是排列。 請幫忙。 抱歉解釋不好,非常沮喪。

用於排列或組合的 Itertools 函數將一系列元素作為第一個參數。 它無法為您生成系列(從azabc...xyz )。 幸運的是string提供了一些常量,比如包含a-zA-Z ascii_letters

如果您的目標是解釋正則表達式並生成每個案例,...這很難,您應該解釋原因嗎? 在我們走得更遠之前。

如果您只想獲得字母的組合:

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_letters替換為任何一系列字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM