我一直试图避免regex
,因为我根本无法理解它是如何工作的。大多数时候,我设法通过运气而不是实际技能来获得预期的结果。
但是,我正在尝试用string-replace-loader
或String-Replace-Plugin
替换捆绑的 webpack 源中的任何空格字符(结果越来越容易)。但是在我尝试在实际源代码上执行此操作之前,我想了解我正在尝试执行的正则表达式。
问题所在
我有查询字符串,它总是以dqlParse
开头,后跟n
然后可能是一些t
和其他空格字符。如果我匹配这个,我已经设法在测试字符串中删除我的空格字符
/s+s/g
并简单地将其替换为" "
.
由于我无法控制捆绑包中的所有字符串,因此我想我可以通过在字符串前面添加dqlParse
然后按组匹配和替换来指示要替换的字符串。不幸的是,到目前为止没有运气。
我试过什么
到目前为止,我已经尝试过这样的事情
/(^dqlParse)(.*)/g
这基本上是它应该做的,因为匹配组$1
是dqlParse
,匹配组$2
是我想进行替换的字符串的其余部分。
是否可以只在第二场比赛组中替换?
谢谢!任何帮助表示赞赏!
是的,您可以使用String#replace
text = text.replace(/^(dqlParse)(.*)/g, function(_, x, y) {return x + y.replace(/s{2,}/g, ' ');})
这会将dqlParse
匹配并捕获到组 1(回调函数中的变量x
),行的其余部分将被捕获到组 2 中(回调函数中的y
)。因此,一旦找到匹配项,替换将是x
和y
的串联,将所有两个或多个空格块替换为单个空格。