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