簡體   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