是否可以仅在匹配组中替换 - REGEX



我一直试图避免regex,因为我根本无法理解它是如何工作的。大多数时候,我设法通过运气而不是实际技能来获得预期的结果。

但是,我正在尝试用string-replace-loaderString-Replace-Plugin替换捆绑的 webpack 源中的任何空格字符(结果越来越容易)。但是在我尝试在实际源代码上执行此操作之前,我想了解我正在尝试执行的正则表达式。

问题所在

我有查询字符串,它总是以dqlParse开头,后跟n然后可能是一些t和其他空格字符。如果我匹配这个,我已经设法在测试字符串中删除我的空格字符

/s+s/g

并简单地将其替换为" ".

由于我无法控制捆绑包中的所有字符串,因此我想我可以通过在字符串前面添加dqlParse然后按组匹配和替换指示要替换的字符串。不幸的是,到目前为止没有运气。

我试过什么

到目前为止,我已经尝试过这样的事情

/(^dqlParse)(.*)/g

这基本上是它应该做的,因为匹配组$1dqlParse,匹配组$2是我想进行替换的字符串的其余部分。

是否可以只在第二场比赛组中替换?

谢谢!任何帮助表示赞赏!

是的,您可以使用String#replace

text = text.replace(/^(dqlParse)(.*)/g, function(_, x, y) {return x + y.replace(/s{2,}/g, ' ');})

这会将dqlParse匹配并捕获到组 1(回调函数中的变量x),行的其余部分将被捕获到组 2 中(回调函数中的y)。因此,一旦找到匹配项,替换将是xy的串联,将所有两个或多个空格块替换为单个空格。

最新更新