[英]Find string after “task-” in a long substring using regex
I have list of files with a pattern sub-*_task-XYZabc_run-*_bold.json
and sub-*_task-PQRghu_bold.json
, for example: 我有一个模式的文件列表
sub-*_task-XYZabc_run-*_bold.json
和sub-*_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
I intend to find all different task names from the filename. 我打算从文件名中找到所有不同的任务名称。 In the above example,
dis
and fb
are the two tasks. 在上面的示例中,
dis
和fb
是两个任务。
What kind of regex should I use to find TASKNAME
from task-TASKNAME
in a given filename? 我应该使用哪种正则表达式从给定文件名的
task-TASKNAME
中找到TASKNAME
?
The following regex should do it : 以下正则表达式应该做到这一点:
(?<=task-).*?(?=_)
see regex demo / explanation 参见正则表达式演示/说明
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()))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.