Python正则表达式:每个字符串都有多个正则表达式,它们相互排斥,比如在cell profiler中?

2024-04-20 10:58:56 发布

您现在位置:Python中文网/ 问答频道 /正文

可以在cellprofiler中使用python重新创建正则表达式捕获吗? 因此,我一起编译多个正则表达式,而第一个正则表达式将捕获字符串的一部分,将此捕获存储在变量中,下一个正则表达式将在前一个正则表达式之后启动,并查找另一个模式,等等? 我想创建一个用户输入,以确定用户数据ID的格式,这似乎是一个比我通常知道如何使用正则表达式来解决它容易得多的用户输入

因此,在cellprofiler中,以下表达式用于字符串 “t10_F0010_GFP_D2.tif”将给出:

string='t10_F0010_GFP_D2.tif'
pattern=t(?P<Timepoint>[0-9]+)_F(?P<Site>[0-9]{4})_(?P<Channel>.*)_(?P<Well>[A-Z][0-9]).tif

Output:
Timepoint=10
Site=0010
Channel=GFP
Well=D2

因此,该模式将转化为: 从一个“t”开始,捕获以下一个或多个数字作为“时间点”, 要求后跟“F”,然后捕获四位数字[0-9]作为“站点”, 需要后跟“”,捕获之后的任何内容,直到下一个“uu”作为“通道”,捕获一个字母,后跟一个数字,需要在.tif中加上to和

这能在python中重现吗


Tags: 数据字符串用户模式channelsite数字d2
1条回答
网友
1楼 · 发布于 2024-04-20 10:58:56

您可以将re.match()groupdict()一起使用

Ex:

import re

string='t10_F0010_GFP_D2.tif'
pattern=re.compile("t(?P<Timepoint>[0-9]+)_F(?P<Site>[0-9]{4})_(?P<Channel>.*)_(?P<Well>[A-Z][0-9]).tif")
for k, v in pattern.match(string).groupdict().items(): #  > {'Well': 'D2', 'Site': '0010', 'Channel': 'GFP', 'Timepoint': '10'}
    print("{}={}".format(k, v))

输出:

Well=D2
Site=0010
Channel=GFP
Timepoint=10

相关问题 更多 >