Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正则表达式匹配字符串的一部分?(python)_Python_Regex - Fatal编程技术网

使用正则表达式匹配字符串的一部分?(python)

使用正则表达式匹配字符串的一部分?(python),python,regex,Python,Regex,我可以使用什么正则表达式来匹配基因列表字符串中的基因(粗体): 基因列表:F59A7.7T25D3.3F13B12.4cysl-1cysl-2cysl-3cysl-4F01D4.8 我尝试了:GENE_List:(((\w+)(\w+))+*但它只捕获最后一个基因更新 事实上要简单得多: [^\s;]+ 但是,首先使用子字符串仅获取所需的部分(基因,不包括基因列表) 演示:更新 事实上要简单得多: [^\s;]+ 但是,首先使用子字符串仅获取所需的部分(基因,不包括基因列表) 演示:给定:

我可以使用什么正则表达式来匹配基因列表字符串中的基因(粗体):

基因列表:F59A7.7T25D3.3F13B12.4cysl-1cysl-2cysl-3cysl-4F01D4.8


我尝试了:GENE_List:(((\w+)(\w+))+*但它只捕获最后一个基因

更新

事实上要简单得多:

[^\s;]+
但是,首先使用子字符串仅获取所需的部分(基因,不包括基因列表)


演示:更新

事实上要简单得多:

[^\s;]+
但是,首先使用子字符串仅获取所需的部分(基因,不包括基因列表)

演示:

给定:

>>> s="GENE_LIST: F59A7.7; T25D3.3; F13B12.4; cysl-1; cysl-2; cysl-3; cysl-4; F01D4.8"
可以使用Python字符串方法执行以下操作:

>>> s.split(': ')[1].split('; ')
['F59A7.7', 'T25D3.3', 'F13B12.4', 'cysl-1', 'cysl-2', 'cysl-3', 'cysl-4', 'F01D4.8']
对于正则表达式:

(?<=[:;]\s)([^\s;]+)
(?>>关于findall(r'(?给出:

可以使用Python字符串方法执行以下操作:

>>> s.split(': ')[1].split('; ')
['F59A7.7', 'T25D3.3', 'F13B12.4', 'cysl-1', 'cysl-2', 'cysl-3', 'cysl-4', 'F01D4.8']
对于正则表达式:

(?<=[:;]\s)([^\s;]+)

(?>>re.findall(r')(?您可以使用以下命令:

\s([^;\s]+)

  • 捕获的组
    ([^;\s]+)
    ,将包含所需的子字符串,后跟空格(
    \s


您可以使用以下选项:

\s([^;\s]+)

  • 捕获的组
    ([^;\s]+)
    ,将包含所需的子字符串,后跟空格(
    \s

输出为:

['F59A7.7',
'T25D3.3',
'F13B12.4',
'cysl-1',
'cysl-2',
'cysl-3',
'cysl-4',
'F01D4.8']
输出为:

['F59A7.7',
'T25D3.3',
'F13B12.4',
'cysl-1',
'cysl-2',
'cysl-3',
'cysl-4',
'F01D4.8']


基因似乎是用分号分隔的。你可以利用这个事实来构建一个正则表达式来满足你的需求。如果你发布一个你已经尝试过的完整python程序,我们可以更好地帮助你。基因似乎是用分号分隔的。你可以用这个事实来构建一个正则表达式来满足你的需求。如果您发布了一个您已经尝试过的完整python程序。是的,最后一个基因后面没有分号,最后一个基因前面总是有空格吗?是的,最后一个基因后面没有分号,最后一个基因前面总是有空格吗?在我的例子中,我正在搜索一个大xml文件以查找基因信息,所以我实际上需要搜索对于“Gene_list”,首先尝试提取每个基因,然后将其添加到所有基因的列表中。您考虑过使用XML解析器吗?是的,我实际上正在使用它,但是基因信息并不是作为自己的节点存储的,而是列在节点“notes”中,该节点包含很多其他信息(除了基因名称)我现在不关心的是,这更多的是我在寻找的:(?@SeanSadykoff:regex
)(?在我的例子中,我正在搜索一个大的xml文件来查找基因信息,所以我实际上需要搜索“基因列表”首先,然后尝试将每个基因提取出来,将其添加到所有基因的列表中。您考虑过使用XML解析器吗?是的,我实际上正在使用它,但是基因信息并不是作为自己的节点存储的,而是列在节点“注释”中,该节点包含很多其他信息(除了基因名称)我现在不关心的是,这是我一直在寻找的:(?@SeanSadykoff:regex
(?这也将捕获前面的空格,因此第一个基因捕获将是'F59A7.7'@RubenPirotte我不确定在每个空格更新之前是否有多个空格。对不起,我想你误解了:s捕获了空格,而我们只需要该空格后面的基因。所以要么进行修剪,要么regex必须修改。@RubenPirotte您是否检查了修改后的答案?这也将捕获前面的空白,因此第一个基因捕获将是'F59A7.7'@RubenPirotte我不确定在每次更新之前是否有多个空白。很抱歉,我想您误解了:\s捕获了空白,而我们只想要它空白后面有一个基因。所以要么修剪,要么修改正则表达式。@RubenPirotte你检查过修改后的答案了吗?