匹配正则表达式(python)

匹配正则表达式(python),python,regex,bioinformatics,Python,Regex,Bioinformatics,对于以下序列: NM_001003443 chr11+5925152 5926098 5925152 5926098 2 5925525925652,59254045926098 我想要一个如下所示的信息行(未许可,意味着sys.argv中有一个'-s'): >NM_00100343 | chr11(+):5925152Z5926098 或(拼接,系统argv中无“-s”): >NM_00100343 | chr11(+):5925152Z5926098 | 5925151z5925404592

对于以下序列:

NM_001003443 chr11+5925152 5926098 5925152 5926098 2 5925525925652,59254045926098

我想要一个如下所示的信息行(未许可,意味着sys.argv中有一个'-s'):

>NM_00100343 | chr11(+):5925152Z5926098

或(拼接,系统argv中无“-s”):

>NM_00100343 | chr11(+):5925152Z5926098 | 5925151z59254045925652z5926098

我尝试过这样做,但一直得到不正确的匹配,有人能看看我的正则表达式,看看它是否看起来和/或匹配正确吗

我写过:

p='(NM\ud+)\s+(chr\d+)\s+([++-])\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)、(\d+)、s+(\d+)、(\d+)、'

并尝试通过以下方式匹配它们(文件中的每一行看起来像上面给出的行示例,由fp=open(infle,'r')打开):

编辑,这看起来正确吗?

for line in fp:
    line = line.replace(',',' ')
    tokens = line.split()
    if '-s' in sys.argv and r:
        wp.write('>'+tokens[0]+'|'+tokens[1]+'('+tokens[2]+')'+':'+tokens[3]+'-'+tokens[4])
    else:
        wp.write('>'+tokens[0]+'|'+tokens[1]+'('+tokens[2]+')'+':'+tokens[3]+'-'+tokens[4]+'|'+tokens[5]+'-'+tokens[10]+','+tokens[8]+'-'+tokens[11])

所有需要的数据都用空格或逗号分隔,因此根本不需要正则表达式

mystring = mystring.replace(',', ' ')  # convert all commas to spaces
tokens = mystring.split()  # split at spaces
如果要坚持使用正则表达式,则会出现一些拼写错误。这是正确的正则表达式:
p='(NM\ud+)\s+(chr\d+)\s+([++\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)、(\d+)、s+(\d+)、(\d+)、(\d+),

  • [+-]
    不带参数和|
  • (chr\d+)
  • 术语
    ,s+(
    接近regexp结尾处)中缺少
    \

  • 如果我在空格处拆分,我如何使其看起来像所需的格式?@codecordsman-它应该是
    [+-]
    而不是
    [+-]
    ,因为它是一个字符类我编辑了我的代码,因为我正在读取文件中的行,所以它的格式是否正确??
    mystring = mystring.replace(',', ' ')  # convert all commas to spaces
    tokens = mystring.split()  # split at spaces