感謝您的意見,我設法爲特定的正則表達式手動做到這一點,現在(直到我提高我的Python技能)使用此代碼(正則表達式[AGT] [公司] AC [ACT):
import itertools
def create_pots():
af = []
bf = []
cf = []
df = []
ef = []
gf = []
a = list(itertools.combinations('AGCT', 3))
b = list(itertools.combinations('AGCT', 2))
c = list(itertools.combinations('AGCT', 1))
d = list(itertools.combinations('AGCT', 1))
e = list(itertools.combinations('AGCT', 3))
for i in range(len(a)):
af.append('['+ ''.join(a[(i-1)]) + ']')
for i in range(len(b)):
bf.append('['+''.join(b[(i-1)])+']')
for i in range(len(c)):
cf.append(''.join(c[(i-1)]))
for i in range(len(d)):
df.append(''.join(d[(i-1)]))
for i in range(len(e)):
ef.append('['+''.join(e[(i-1)])+']')
g = list(itertools.product(af, bf, cf, df, ef))
for i in range(len(g)):
gf.append(''.join(g[(i-1)]))
gf.remove('[AGT][AG]AC[ACT]')
return gf
這將返回類似地雷的所有可能RegExs的列表,如:
gf = ['[ACT][GT]CC[ACT]', '[GCT][CT]TT[GCT]', '[GCT][CT]TT[AGC]', '[GCT][CT]TT[AGT]', '[GCT][CT]TT[ACT]', '[GCT][CT]TA[GCT]', '[GCT][CT]TA[AGC]', '[GCT][CT]TA[AGT]', '[GCT][CT]TA[ACT]', '[GCT][CT]TG[GCT]', '[GCT][CT]TG[AGC]', '[GCT][CT]TG[AGT]'....]
看到這個問題:http://stackoverflow.com/questions/492716/reversing-a-regular-expression-in-python –
那麼'[AG] * CG'呢?你打算如何處理有可能無限匹配的RegEx?使用發電機? – Hbcdev