drb*_*sen 2 python regex python-3.x
我试图在Python 3中创建一个正则表达式,匹配7个字符(例如> AB0012),由未知数量的字符分隔,然后匹配另外6个字符(例如aaabbb或bbbaaa).我的输入字符串可能如下所示:
>AB0012xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>CD00192aaabbblllllllllllllllllllllyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyybbbaaayyyyyyyyyyyyyyyyyyyy>ZP0199000000000000000000012mmmm3m4mmmmmmmmxxxxxxxxxxxxxxxxxaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
这是我提出的正则表达式:
matches = re.findall(r'(>.{7})(aaabbb|bbbaaa)', mystring)
print(matches)
Run Code Online (Sandbox Code Playgroud)
我试图产生的输出看起来像这样:
[('>CD00192', 'aaabbb'), ('>CD00192', 'bbbaaa'), ('>ZP01990', 'aaabbb')]
Run Code Online (Sandbox Code Playgroud)
我阅读了Python文档,但是我找不到如何匹配正则表达式的两个部分之间的未知距离.是否有某种通配符可以让我完成我的正则表达式?在此先感谢您的帮助!
编辑:
如果我*?在我的代码中使用这样:
mystring = str(input("Paste promoters here: "))
matches = re.findall(r'(>.{7})*?(aaabbb|bbbaaa)', mystring)
print(matches)
Run Code Online (Sandbox Code Playgroud)
我的输出如下:
[('> CD00192','aaabbb'),('','bbbaaa'),('','aaabbb')]
*列表中的第二项和第三项分别缺少> CD00192和> ZP01990.如何让正则表达式在列表中包含这些字符?
这是一种非正则表达式方法.拆分为">"(您的数据将从第2个元素开始),然后因为您不关心这7个字符是什么,所以从第8个字符开始检查直到第14个字符.
>>> string=""" AB0012xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>CD00192aaabbblllllllllllllllllllllyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyybbbaaayyyyyyyyyyyyyyyyyyyy>ZP0199000000000000000000012mmmm3m4mmmmmmmmxxxxxxxxxxxxxxxxxaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"""
>>> for i in string.split(">")[1:]:
... if i[7:13] in ["aaabbb","bbbaaa"]:
... print ">" + i[:13]
...
>CD00192aaabbb
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
395 次 |
| 最近记录: |