簡體   English   中英

正則表達式排除Word

[英]Regular Expression Exclude Word

我正在嘗試替換名稱為“eventHandler”或以“... EventHandler”結尾的所有事件處理函數,以封裝在公共事件處理函數中,該函數在實際調用事件處理程序之前執行其他任務。

簡而言之,我正在嘗試使用find&replace中的正則表達式(在崇高的文本編輯器中)執行此操作:

loginEventHandler (args,callback)=> processEventHandlerloginEventHandler ,args,callback)

[ 找 ]

(事件處理程序?|!(processEventHandler)\\ w +事件處理程序)(。(*))

[替換]

processEventHandler($ 1,$ 2)

這沒有按預期工作。 該find也匹配rocessEventHandler 如果函數名稱為“processEventHandler”,如何忽略匹配函數?

我嘗試了以下問題中提到的解決方案,但沒有幫助。

正則表達式匹配不包含單詞的行?

用於排除單詞/字符串的正則表達式

這是測試結果:

正則表達式測試結果

基本上,你的正則表達式匹配字符串的一部分與process是因為正則表達式沒有錨定在開始。 如果需要匹配字符串開頭的字符串,請使用^ 如果您打算在較大的文本中匹配它們,請使用\\b (單詞邊界)。

你可以使用一個帶有負前瞻的正則表達式,它固定在前導詞邊界:

(?i)(\b(?!process)\w*EventHandler)\(([^)]*)\)

請參閱正則表達式演示

正則表達式(由於(?i)內聯修飾符不區分大小寫)匹配:

  • \\b - 單詞邊界
  • (?!process) - 如果找到以下字符序列,則表示匹配失敗的否定前瞻: \\w* - 零個或多個字母數字符號+ EventHandler
  • \\( - 左括號
  • ([^)]*) - 除零之外的零個或多個字符)
  • \\) - 右括號

如果原始的EventHandler只有2個參數,那么這可能有效

[ 找 ]

(eventHandler|\\w+EventHandler)\\((.*?),(.*)\\)

[替換]

processEventHandler($1, $2, $3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM