如何将捕获组与Gulp-Replace一起使用



gulp-replace 0.5.4

当前通过Gulp和Rev:

<link rel="stylesheet" href="assets/styles/app-3c224ff086.css">

目标

<link rel="stylesheet" href="assets/styles/app-3c224ff086.css" media="screen">

结果

<link rel="stylesheet" href="$1" media="screen">

初始测试为:https://regex101.com/r/mim7tn/1。我可能已经将测试与$ 0的捕获组联系起来,但是在我的项目中,我使用的是捕获组1。

在我的Gulp任务中,添加了以下内容:

var regex = /"assets/styles/app-+.*"/;
var subst = `$1 media="screen"`;
.pipe(replace(regex, subst))

我的字符串(包括开始和终点)正在找到。而不是一个捕获组,我获得了1美元的字面意思。如何获得捕获组的实际价值?Gulp-Replace文档显示了一个替换值" $ 1foo"。关于SO显示" $ 1"one_answers" $ 1"的类似问题,我还没有看到与我的情况的不同。我尝试了背键,单引号和双引号。

$1 backReference是指带有ID 1的捕获组,图案中使用第一个(...)捕获的文本。

您必须使用

 var regex = /("assets/styles/app-+.*")/;

对于$1,以与$&相同的方式"工作"(向后注册到整个匹配值)。

您可以将回调用作Gulp-Replace中的第二个参数。该功能是在每个捕获组上循环的。这是一个示例,我将骆驼变量转换为CSS符号

.pipe(replace(/([A-Z])/g, function(match){
  return '-'+match.toLowerCase()
}))
{camelCase1: 1, camelCase2: 2}

变为骆驼-case1和case-case2

最新更新