繁体   English   中英

如何仅替换以下正则表达式(JavaScript)的一部分?

[英]How do I replace only a portion of the following regex (JavaScript)?

我正在学习正则表达式和文件保存。 作为练习,我想将文件中的每个func转换为function

data.replace(/func\((.*)\)/g, 'function')

问题是文件中的func现在最终像这样结束:

var thisfunc = function {

}

代替这个:

var thisfunc = function() {

}

我该怎么做,以便正则表达式仅替换func关键字?

编辑:

输入:

fs.readFile(filename, 'utf8', func(err, data) {
  if (err) throw err
  console.log('OK: ' + filename)
  var newData = data.replace(/func\((.*)\)/g, 'function')
  console.log(newData)
})

var thisfunc = func() {

}

仅匹配并替换开头的括号,
特别是如果可以像func(a, func(b))那样嵌套它们:

data.replace(/func\(/g, 'function(')

注意:在替换字符串需要对( ,请使用function\\(

您的正则表达式也匹配参数(在括号中),并且整个匹配项将被only function代替。 您可以:

  • 从匹配中排除参数,例如, 先行

     data.replace(/func(?=\\((.*)\\))/g, 'function') 
  • 或“重新”将它们插入替换字符串

     data.replace(/func\\((.*)\\)/g, 'function($1)') 

在这里,您实际上需要一个肯定的前瞻性断言。 而且您不需要使用捕获组。

data.replace(/func(?=\(.*\))/g, 'function')

要么

.*? 这里将对任何字符进行零次或多次非贪婪匹配。

data.replace(/func(?=\(.*?\))/g, 'function')

(?=\\(.*?\\))断言关键字func必须带有一对括号,括号中可以包含或可以不包含参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM