正则表达式替代品未在组中缓存

时间:2016-06-23 14:55:57

标签: regex

如何抓住嵌套组的替代方案?

我想首先返回捕获组:(.*)((core\/)?\/misc\/drupal\.js)(即字符串core/misc/drupal.js之前的任何内容,可能包含core/,也可能不包含core/。)

但是,mono ~/Downloads/nuget.exe restore Open-XML-SDK.sln部分始终包含在第一个捕获组中,而不是第二个捕获组。

另请参阅this示例。

1 个答案:

答案 0 :(得分:1)

你的正则表达式有一个问题:你在(core\/)?组的末尾有一个斜杠字符,后跟\/misc\/drupal\.js中的另一个斜杠字符。这会导致core/部分在第一个点规则中被解析,无论如何。

删除额外的斜杠是不够的。为了避免点占用尽可能多的字符,您必须通过向?量词添加*来禁用默认的贪婪行为,如下所示:

(.*?)((core\/)?misc\/drupal\.js)

在行动here中查看。