如何用Python正则匹配含多个'-'的字符串?蛋白序列匹配需求
蛋白序列中含可变'-'的字符串匹配与索引获取
连续字符串的匹配你已经搞定了,直接用
re.search加目标字符串就能拿到索引,这里不多啰嗦。针对中间可能插了多个'-'的目标序列,核心思路是把原目标的每个字符之间,加上匹配任意数量'-'的正则规则,具体操作如下:
比如你要匹配的目标是SQSVS,我们可以把它转换成正则模式S-*Q-*S-*V-*S,这个模式允许每个字符之间出现0个或多个'-',完美对应序列里的SQS---VS。
直接上代码:
import re seq = "EIVL<strong>TQSPG</strong>TLSLSRA<strong>SQS---VS</strong>SSYLAWYQQKPG" # 匹配连续字符串TQSPG match_continuous = re.search('TQSPG', seq) if match_continuous: print(f"连续字符串索引:{match_continuous.span()}") # 输出 (4, 9) # 匹配带可变'-'的SQSVS target_with_dash = "SQSVS" # 生成正则模式:字符间允许任意数量'-' regex_pattern = '-*'.join(target_with_dash) match_dash = re.search(regex_pattern, seq) if match_dash: print(f"含'-'字符串索引:{match_dash.span()}") # 输出 (22, 31)
如果需要限定'-'的数量(比如至少1个,或者最多3个),只需要把'-*'换成对应的规则:
- 至少1个'-':用
'-+' - 最多3个'-':用
'-{0,3}'
内容的提问来源于stack exchange,提问作者worfei alafei
相关产品推荐
相关产品推荐

