[英]Why can't I find all pattern matches with python regex?
這個問題看起來很簡單,但是我不知道為什么我沒有得到所有比賽。 我正在處理的字符串是“ c.1292_1294delTTCinsA”。 我想使用嵌套組提取四個模式:“ del”,“ delTTC”,“ ins”和“ insA”。 我嘗試過re.match,re.findall和re.finditer都沒有成功。 這是我的代碼:
>>> s = 'c.1292_1294delTTCinsA'
>>> m = re.findall(r'c\.\d+_\d+((del|ins)[AGCT]+)', s)
>>> m
[('delTTC', 'del')]
如果在末尾添加“ +”運算符,則會得到其他兩個預期的匹配項:
>>> m = re.findall(r'c\.\d+_\d+((del|ins)[AGCT]+)+', s)
>>> m
[('insA', 'ins')]
有人可以告訴我我在做什么錯嗎? 除非我缺少任何東西,否則這兩種模式不會重疊。
提前致謝!
您的正則表達式要求該組直接在c\\.\\d+_\\d+
。 字符串的“ ins”部分不直接在此材料之前(在其之前是“ delTTC”)。 當添加extra +
,允許這樣的組序列,以便它先找到del組,然后再找到ins組,但后來該組的重復將“覆蓋”較早的組,因此僅最后一個(“ ins”部分) )返回。
您實際上是否需要匹配字符串的開頭部分? 您可以制作正則表達式((del|ins)[AGCT]+)
,它將找到所有四個部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.