簡體   English   中英

為什么找不到python regex的所有模式匹配項?

[英]Why can't I find all pattern matches with python regex?

這個問題看起來很簡單,但是我不知道為什么我沒有得到所有比賽。 我正在處理的字符串是“ c.1292_1294​​delTTCinsA”。 我想使用嵌套組提取四個模式:“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM