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

Is it possible to replace only in a match group - REGEX

提问人:Flo Ragossnig 提问时间:10/7/2022 最后编辑:tripleeeFlo Ragossnig 更新时间:10/7/2022 访问量:82

问:

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

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

问题

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

/\s+\s/g

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

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

我尝试过什么

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

/(^dqlParse)(.*)/g

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

是否可以只在第二个匹配组中替换?

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

JavaScript 正则表达式 替换 匹配

评论

1赞 tripleee 10/7/2022
这真的取决于你使用什么。正则表达式只能匹配;替换机制必须由您使用的语言或工具提供。请查看正则表达式标签的标签指南,并进行编辑,以使用这些详细信息更新您的问题。
0赞 Flo Ragossnig 10/7/2022
我已经说过我想将它与 the 或 the 一起使用 - 所以它都是 Javascriptstring-replace-loaderString-Replace-Plugin
0赞 tripleee 10/7/2022
对于我们这些不使用这些技术的人来说,这并不明显。但感谢您的跟进;我添加了javascript标签
0赞 Flo Ragossnig 10/8/2022
不好意思!假设提及 webpack 就足够🙈了 感谢您添加适当的标签!

答:

0赞 Wiktor Stribiżew 10/7/2022 #1

是的,您可以使用以下方法做到这一点:String#replace

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

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

评论

1赞 Flo Ragossnig 10/8/2022
谢谢!我会尝试这是否适用于任何一个扩展并回复您!🙌