Python中re.search匹配正则表达式无结果问题求助
问题分析与解决
嘿,我一眼就发现问题所在啦——你的正则表达式里多了几个不该有的空格!仔细对比正则和目标字符串就能看出来:
- 正则里写的是
ID = ss[\d]+-RA,但目标字符串里是ID=ss59537-RA——ID和=之间、=和ss之间都没有空格 - 同样,正则里的
Parent = ss[\d]+-RA;,目标字符串里是Parent=ss59537-RA;,这里也多了不必要的空格
另外还有个小优化点:[\d] 可以直接写成 \d,因为 \d 本身就代表数字字符类,不需要额外套方括号。
修正后的代码
import re # 去掉多余空格,优化正则写法 searchstr = re.compile(r'(ID=ss\d+-RA)(:)(exon:\d+)(;)(Parent=ss\d+-RA;)') test = "ID=ss59537-RA:exon:0;Parent=ss59537-RA;" match = re.search(searchstr, test) print(match.group()) # 打印完整匹配内容 # 如果需要提取单个分组的内容,可以用 match.group(1)、match.group(2) 等
运行这段代码就能得到预期的匹配结果了。要是你不需要这么多独立分组,还可以把正则简化成更简洁的版本:
searchstr = re.compile(r'ID=ss\d+-RA:exon:\d+;Parent=ss\d+-RA;')
内容的提问来源于stack exchange,提问作者upendra
相关产品推荐
相关产品推荐

