python正则表达式模式搜索

python正则表达式模式搜索,python,Python,您好,我对python正则表达式感到困惑,以下是我的代码: import os,re,sys t="LOC_Os01g01010.1 GO:0030234 F enzyme regulator activity IEA TAIR:AT3G59570" k =['LOC_Os01g01010'] re_search=re.search(re.escape(k[0] + r'.1 GO:\d{7}'),t,re.M|re.I|re.S) if re_search is No

您好,我对python正则表达式感到困惑,以下是我的代码:

import os,re,sys

t="LOC_Os01g01010.1 GO:0030234  F   enzyme regulator activity   IEA     TAIR:AT3G59570"
k =['LOC_Os01g01010']

re_search=re.search(re.escape(k[0] + r'.1   GO:\d{7}'),t,re.M|re.I|re.S)
if re_search is None:
      pass
else:
      print re_search.group()
“t”是我的数据,“k”是我的目标


我想要的是“LOC_Os01g01010.1 GO:0030234”或“GO:0030234”,但我不知道如何编写模式。

考虑到您的示例以及在
LOCè*********.*
中星星可以是集合中的任何东西[a-zA-Z0-9],我建议:

import os,re,sys

t="LOC_Os01g01010.1 GO:0030234  F   enzyme regulator activity   IEA      TAIR:AT3G59570"
k =['LOC_Os01g01010']

re_search=re.search("(LOC_[0-9A-Z]*)",t,re.M|re.I|re.S)
if re_search is None:
      pass
else:
      print re_search.group()
当我使用python2.7运行python regexthing.py时,
python regexthing.py
产生
LOC_Os01g01010
(LOC[0-9A-Za-z]*)
是一个捕获组,它捕获与表达式
LOC[0-9A-z]*
匹配的任何内容。此表达式将匹配
LOC_
LOC_ABCabc123
LOC_a1B2C


我希望这能回答你的问题。

我相信以下几点可以解决你的问题:

import re
t="LOC_Os01g01010.1 GO:0030234  F   enzyme regulator activity   IEA     TAIR:AT3G59570"
my_regex = re.compile(r'^LOC_(.)*GO:\d{7}',re.M|re.I|re.S)
searches = my_regex.search(t)
if searches:
    print searches.group()

如果有任何解,正则表达式就有(可证明的)无限解,可以匹配无界字符串中的有限示例集

这是一种包含方式,表示您需要更具体,因为只给我们一个您试图匹配的示例,我们将能够为您生成多个解决方案,具体取决于我们自己添加的进一步(未指定)假设

以下是一些假设:

>>重新导入
>>>t=“LOC_Os01g01010.1 GO:0030234 F酶调节器活性IEA TAIR:AT3G59570”
>>>re.findall('\w+\.\d+',t)#任何算术序列,后跟点和数字
['LOC_Os01g01010.1']
>>>关于findall('[A-Z]+\uw+\.\d+',t)#强制令牌以大写和下划线开头
['LOC_Os01g01010.1']
>>>关于findall('[A-Z]+\u O[A-z01]+\.\d+',t)#强制“O”和中间部分仅为小写字母以及0和1
['LOC_Os01g01010.1']
>>>关于findall('^[A-Z]+_O[A-z01]+\.\d+',t)#强制模式位于字符串的开头
['LOC_Os01g01010.1']```
无论是“我对python正则表达式感到困惑”还是“我不知道如何编写模式”,实际上都不是一个问题。您是否考虑过遵循正则表达式教程或使用例如?字符串结构的哪些部分可以依赖?