如何在word \ w +中同时搜索hypen和underscore

时间:2017-05-22 18:24:06

标签: javascript regex

我想要一个正则表达式,其中包括' - '连字符和' _'下划线。但是这两个角色之间的字符串可能会得到 - 和_。这是一个例子

https://regex101.com/r/8vpzqe/1

sub-Exp1s07_task-route_learning_acq-test-01_run-14_bold.nii.gz
sub-Exp1s07_task-route_learning_acq-test-01_run-14_bold.nii.gz
sub-Exp1s07_task-map-learning_acq-test-01_run-14_bold.nii.gz
sub-Exp1s07_task-route_learning_acq-test-01_run-14_bold.nii.gz
sub-Exp1s07_task-map_learning_acq-test-01_run-14_bold.nii.gz
sub-Exp1s07_task-map_learning_fmap.nii.gz
sub-Exp1s07_task-map_learning_run-14_fmap.nii.gz
sub-Exp1s07_task-map_work_fmap.nii.gz

在上面的例子中,我打算提取输出为Exp1s07,routelearning,map_learning,map-learning,route_learning,route-learning,test-01,test01,test_01而不是一个完整的字符串作为包含上述模式的输出。

使用-\w+_我无法捕捉 - 在路线学习之类的字符串之间。

解释较大的图片,上面的示例字符串基本上具有_key-value_对模式。 sub-Exp1s07_task-map_learning_fmap.nii.gz密钥 - sub, task, fmap, acq, run values- Exp2s07, map_learning, test-01等 我想要找到的是任何值中没有像-_这样的特殊字符。是任务-XX是强制性的,而acq-XXX,run-XXX是可选的。 路线学习在所有例子中并不常见。

2 个答案:

答案 0 :(得分:0)

如果您使用/-([A-Za-z0-9]+([-_][a-zA-Z0-9]+)?)_/g并删除第一个和最后一个字符,我想您会接近?

答案 1 :(得分:-1)

试试/-(\w+)/g

我认为这可以满足您的需求

更新:

/-(\w{3,})_/g

怎么样?

(这对您的编号约定做了一些假设,但这适用于上面列出的示例)

请参阅:https://regex101.com/r/Y2bVY8/1