I am new to regex. I am using Python 2.7 and BeautifulSoup4. I want to iterate over a particular regular expression.
Required ouput :
length : 5 , expression : [a-zA-Z0-9!&#%@]
It should try all possible combinations e.g:
[‘aaaaa’,’aaaab’,’aaaac’,…,’aaaaz’,’aaaaA’,…,’aaaaZ’,’aaaa0′,’aaaa9′,’aaaa!’,’AAA!!’]
Moreover this should be possible too. If the expression is oranged{1}
[‘orangea’,’oranges’]]
I tried this:
regexInput = "a-z0-9" #regexInput = "a-zA-Z0-9!@#$%^&" comb = itertools.permutations(regexInput,passLength) for x in comb: ''.join(x)
I realized that this is a totally wrong approach as these are just permutations. Please help. Sorry for bad explaination, very frustrated.
Advertisement
Answer
Itertools functions for permutations or combinaisons takes a series of elements as first parameter. It cannot generate the serie for you (from a-z
to abc...xyz
). Fortunatly string
offer some constants like ascii_letters
that contain a-zA-Z
.
If your goal is to interpret the regex and generate every cases, … It’s pretty hard and you should explain the why? before we go further.
If you just want to get combinaisons for alphabetical 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']
You can replace string.ascii_letters
with any serie of characters.