如何在regex.finditer中传入Python变量,实现带错配的模式匹配
解决方法
直接通过字符串格式化把列表中的每个模式插入到正则表达式模板里就行,具体代码如下:
import regex string_patterns = ["AAGG", "TTGGA"] reference_seq = "ATGATGCTGATGAGGGGGAAATTTT" # 遍历每个要匹配的模式 for pattern in string_patterns: # 用f-string生成带错配规则的正则表达式 regex_expr = f"({pattern}){{s<=1}}" print(f"当前匹配模式: {pattern}") # 查找所有符合条件的匹配项 for match in regex.finditer(regex_expr, reference_seq): print(f"{match.group()}: [{match.start()}-{match.end()}]") print("---")
补充说明
- 这里用
f-string直接把列表中的pattern变量嵌入正则表达式字符串,替换原来固定的序列部分,保留错配规则{s<=1}(表示允许最多1个替换型错配)。 - 如果你的模式里包含正则元字符(比如
.、*这类),需要先用regex.escape(pattern)对模式进行转义,避免正则语法冲突,比如改成:regex_expr = f"({regex.escape(pattern)}){{s<=1}}"
内容的提问来源于stack exchange,提问作者Mary
相关产品推荐
相关产品推荐

