python - Python 正则表达式:每个字符串的多个正则表达式相互排斥,例如在单元格分析器中?
问题描述
是否可以重新创建正则表达式捕获,因为它在带有 python 的 cellprofiler 中工作?这样我就可以一起编译多个正则表达式,而第一个将捕获字符串的一部分,将此捕获存储在一个变量中,下一个在前一个之后开始并寻找另一个模式等?我想为用户数据 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] 作为“站点”,需要后跟 ' ',捕获之后的任何内容,直到下一个 '_' 作为 'Channel',捕获一个字母后跟一个数字作为 'Well',需要在 .tif 中。
这可以以某种方式在python中重现吗?
解决方案
你可以re.match()
使用groupdict()
前任:
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
推荐阅读
- python - 如果与 one-hot 标签和 categorical_crossentropy 和 softmax 输出一起使用,为什么 keras 模型将所有预测为 1
- bash - sh:第 7 行:意外标记“完成”附近的语法错误
- javascript - 重启轮盘赌Javascript
- c++ - 为什么没有参数的朋友功能不起作用?
- html - 保持 HTML 视频质量
- html - CSS Grid - 内联对齐元素
- flutter - Flutter 如何使用提供者进行 api 调用或更好地使用未来的构建器
- azure - 在 DELTA MERGE 中引发非描述性错误
- javascript - 如何在选择选项 UI 小猫中显示实际值和原始选项 ID?
- chart.js - Chart.js - 是否可以有两个 y 轴的正值一个在另一个之上?