使用regex在长子字符串中查找“task”后面的字符串

2024-10-01 11:28:23 发布

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

我有一个模式为sub-*_task-XYZabc_run-*_bold.jsonsub-*_task-PQRghu_bold.json的文件列表,例如:

sub-03_task-dis_run-01_bold.json
sub-03_task-dis_run-02_bold.json
sub-03_task-dis_run-03_bold.json
sub-03_task-dis_run-04_bold.json
sub-03_task-dis_run-05_bold.json
sub-03_task-dis_run-06_bold.json
sub-03_task-fb_run-01_bold.json
sub-03_task-fb_run-02_bold.json
sub-03_task-fb_run-03_bold.json
sub-03_task-fb_run-04_bold.json

我打算从文件名中找到所有不同的任务名称。在上面的例子中,disfb是两个任务。你知道吗

在给定的文件名中,我应该使用哪种正则表达式从task-TASKNAME中查找TASKNAME?你知道吗


Tags: 文件run名称json列表taskfb文件名
1条回答
网友
1楼 · 发布于 2024-10-01 11:28:23

下面的regex应该做到这一点:

(?<=task-).*?(?=_)

参见regex demo / explanation

python demo

import re
regex = r"(?<=task-).*?(?=_)"
str = """sub-03_task-dis_run-01_bold.json
         sub-03_task-dis_run-02_bold.json
         sub-03_task-dis_run-03_bold.json
         sub-03_task-dis_run-04_bold.json
         sub-03_task-dis_run-05_bold.json
         sub-03_task-dis_run-06_bold.json
         sub-03_task-fb_run-01_bold.json
         sub-03_task-fb_run-02_bold.json
         sub-03_task-fb_run-03_bold.json
         sub-03_task-fb_run-04_bold.json"""
matches = re.finditer(regex, str)
for matchNum, match in enumerate(matches):
    matchNum = matchNum + 1
    print ("{match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))

相关问题 更多 >