python - 正则表达式帮助

标签 python regex python-3.x

我正在尝试在 Python 3 中创建一个正则表达式,它匹配由未知数量的字符分隔的 7 个字符(例如 >AB0012),然后匹配另外 6 个字符(例如 aaabbb 或 bbbaaa)。我的输入字符串可能如下所示:

>AB0012xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab ayyyyyyyyyyyyyyyyyyyy>ZP0199000000000000000000012mmmm3m4mmmmmmmmxxxxxxxxxxxxxxxxxaaabbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

这是我想出的正则表达式:

matches = re.findall(r'(>.{7})(aaabbb|bbbaaa)', mystring)  
print(matches)

我尝试生成的输出如下所示:

[('>CD00192', 'aaabbb'), ('>CD00192', 'bbbaaa'), ('>ZP01990', 'aaabbb')]

我通读了 Python 文档,但找不到如何匹配正则表达式的两个部分之间的未知距离。是否有某种通配符可以让我完成我的正则表达式?先谢谢您的帮助!

编辑:
如果我在代码中使用 *? ,如下所示:

mystring = str(input("Paste promoters here: "))
matches = re.findall(r'(>.{7})*?(aaabbb|bbbaaa)', mystring)
print(matches)

我的输出如下所示:
[('>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

关于python - 正则表达式帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5764642/

相关文章:

python - Keras 2 上具有自定义(无)损失的三元组嵌入层

Python:字典作为实例变量

Python lru_cache : how can currsize < misses < maxsize?

php - PHP 与 Python 中的默认函数变量

javascript - 输入只允许一个小数点

c# - 查找/编辑文件中的确切条目

python - 为什么向前看会返回时间戳的匹配项

python - Python 2 和 Python 3 之间 re 模块的变化

python - Pandas GroupBy.agg() 抛出 TypeError : aggregate() missing 1 required positional argument: 'arg'

python - 在python中,如何只为函数存储一次 'constants'?