繁体   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