[英]Regular Expression Exclude Word
我正在尝试替换名称为“eventHandler”或以“... EventHandler”结尾的所有事件处理函数,以封装在公共事件处理函数中,该函数在实际调用事件处理程序之前执行其他任务。
简而言之,我正在尝试使用find&replace中的正则表达式(在崇高的文本编辑器中)执行此操作:
loginEventHandler (args,callback)=> processEventHandler ( loginEventHandler ,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.