gpt4 book ai didi

python - 获取与正则表达式模式匹配的完整子字符串

转载 作者:太空宇宙 更新时间:2023-11-04 07:36:51 25 4
gpt4 key购买 nike

我不擅长正则表达式,正在寻找一些在线资源来了解我想做的事情。所以基本上,我在 Python 中有一个正则表达式,如下所示:

import re
pattern = re.compile(r'(?=(ATG(?:...)*?)(?=TAG|TGA|TAA))')

这应该找到所有以 ATG 开头并以 TAG 或 TGA 或 TAA 结尾的子字符串。我将其用作:

str = "ATGCCCTAG"
print pattern.findall(str)

但是,这会返回 ATGCCC 并删除尾随的 TAG,我希望它保留尾随的 TAG。我如何更改它以提供完整的子字符串?

最佳答案

To find all sub strings which begin with ATG and end in TAG or TGA or TAA

你需要一个

ATG(?:...)*?(?:TAG|TGA|TAA)

这个正则表达式还确保在 ATG 和最后一个 TAG 之间有 0 个或多个 3 符号(不包括换行符)序列,TGATAA

参见 regex demo

Python demo :

import re
p = re.compile(r'ATG(?:...)*?(?:TAG|TGA|TAA)')
test_str = "FFG FFG ATGCCCTAG"
print (p.findall(test_str))

如果您需要查找非重叠 子字符串,这将起作用。要找到重叠的,技术是将其封装到一个捕获组中,并放置在一个 unanchored 积极前瞻中:

r'(?=(ATG(?:...)*?(?:TAG|TGA|TAA)))'
| | ||
| | --- Capture group ------- ||
| -- Positive look-ahead ------ |

参见 regex demo

关于python - 获取与正则表达式模式匹配的完整子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32991650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com