Python 如何为特定字符串编写正则表达式?

Python 如何为特定字符串编写正则表达式?,python,regex,python-3.x,Python,Regex,Python 3.x,我正在写一个程序来定位基因1..789是基因5'-3'的起始和结束位置。补体(45678..98765)是基因3'-5'。因此,该基因的起始点是98765,终止点是45678 我想提取数据并分别以[“None”,1789]和[“complete”,9876545678]的格式存储在python列表中 1..789=>[“无”,1789] 补码(45678..98765)=>[“补码”,9876545678] 我是否要使用正则表达式以及如何编写 除了正则表达式,还有其他方法吗 import re

我正在写一个程序来定位基因<代码>1..789是基因5'-3'的起始和结束位置。补体
(45678..98765)
是基因3'-5'。因此,该基因的起始点是
98765
,终止点是
45678

我想提取数据并分别以
[“None”,1789]
[“complete”,9876545678]
的格式存储在python列表中

  • 1..789
    =>
    [“无”,1789]
  • 补码(45678..98765)
    =>
    [“补码”,9876545678]
  • 我是否要使用正则表达式以及如何编写

    除了正则表达式,还有其他方法吗

    import re
    st = "complement(45678..98765)"
    pat = re.compile(r'\w+')
    result = pat.findall(st)
    for element in result:
        if type(element) is int:
            a = result.pop()
            result.remove(element)
            result.append(str(a))
    print(result)
    
    结果:

    ['complement', '45678', '98765']
    
    ['1', '789']
    
    这里
    \w
    表示匹配字母数字字符,而在
    \w++
    中,“+”表示匹配模式的一个或多个出现,更好的说法是。。。这些话

    所以
    \w+
    将匹配您想要的字符组,例如
    '45678'

    import re
    st = "1..789"
    pat = re.compile(r'\w+')
    result = pat.findall(st)
    for element in result:
        if type(element) is int:
            a = result.pop()
            result.remove(element)
            result.append(str(a))
    print(result)
    
    结果:

    ['complement', '45678', '98765']
    
    ['1', '789']
    
    字母数字表示法:从A到Z的所有字母以及从0到9的所有数字

    如果你是新的正则表达式,考虑阅读 这对regex有一个非常好的介绍,它会给你一个鹰眼般的视角来看待这个主题。 在那之后,你头脑中的所有问题都会得到回答

    输出:

    ['', '1', '789']
    ['complement', '45678', '98765']
    
    ^               # beginning of line
        (.*?)       # group 1, 0 or more any character, not greedy
        \(?         # optional opening parenthesis
        (\d+)       # group 2, 1 or more digits
        \.\.        # 2 dots
        (\d+)       # group 3, 1 or more digits
    
    说明:

    ['', '1', '789']
    ['complement', '45678', '98765']
    
    ^               # beginning of line
        (.*?)       # group 1, 0 or more any character, not greedy
        \(?         # optional opening parenthesis
        (\d+)       # group 2, 1 or more digits
        \.\.        # 2 dots
        (\d+)       # group 3, 1 or more digits
    

    你想得到什么?解释你需要的常规表达问题不清楚。我正在写一个程序来定位基因。1..789是基因5'-3'的起始和结束位置。补体(45678..98765)是基因3'-5'。所以这个基因的起始点是98765,终止点是45678。我想提取数据并以[“None”,1789]和[“complement”,9876545678]的格式存储在python列表中 repectively@pythonbeginner用您评论中的信息更新您的问题。请始终显示您已经尝试过的内容,以便其他人可以看到您遇到的问题,如果您有任何代码,并用任何新信息更新您的问题。bobble bubble感谢您的评论。我是一个新手,甚至不知道如何开始写作,除了导入re并在其中遇到麻烦
    1..789
    的结果是错误的。@托托,我刚刚复制了我的编辑器的输出…谢谢Moh。如果我想得到结果['complete',9876545678],有没有办法做到这一点?98765和45678是一个整数而不是字符串。请您解释一下如何得到结果的原理。我对python绝对陌生。@pythonbeginner,请稍后查看我的编辑。好的,但它是错误的,第一个元素应该是
    “无”“
    考虑将元组转换为列表:)这太棒了!非常感谢。阅读此问题,如果有
    补码
    ,OP似乎想交换结果中的数字。不过我不确定@如果是的话,pythonbeginner需要澄清:)@bobblebble:是的,但这并不清楚,而且,嗯,他们已经接受了,所以我想这是正确的。