匹配所有 javascript 函数的正则表达式
Regular expression to match all javascript functions
大约一个月前,我想组织我所有的 javascript 函数以按字母顺序排列它们,今天玩正则表达式让我再次想到了这个。我只想匹配外部函数以避免嵌套函数被移动并且我认为几乎拥有它,但我缺少一些东西。
我在此页面上使用了 bobble bubble 的回答作为起点。
Regular Expression to match outer brackets
function\s.*\(.*\).*\{(?>[^.*\n*]+|(?R))*\}
这将匹配所有函数定义并捕获第一个大括号之前的参数。出于某种原因,当它是表达式的一部分时,我无法让它匹配换行符模式 [^.*\n*]+
,但是当它单独存在时,它匹配得很好。
我使用 Sublime 文本编辑器作为我的搜索工具,但它最终会出现在 JS 文件中,这可能是一种操作代码的简单方法。
这对我来说似乎匹配所有函数及其主体(除了在一行中定义的那些,这需要额外的表达式)
function.*\(.*\).*\{(.|\n)*?\n\}
或者,如果您不想捕捉主体,只需添加 ?:
function.*\(.*\).*\{(?:.|\n)*?\n\}
我们的想法是一直匹配到换行和右花括号结束:这样正文中的括号(或内部函数)就不会与我们的搜索发生冲突。
经过一天的摆弄,这里有一个正则表达式,它将分解一个 js 文件以匹配所有命名函数,然后将其分解为函数名称、参数和主体。与 Floribon 的解决方案不同,这将匹配任何格式样式,甚至缩小,并忽略嵌套的大括号和函数。
function\s+(?<functionName>\w+)\s*\((?<functionArguments>(?:[^()]+)*)?\s*\)\s*(?<functionBody>{(?:[^{}]+|(?-1))*+})
大约一个月前,我想组织我所有的 javascript 函数以按字母顺序排列它们,今天玩正则表达式让我再次想到了这个。我只想匹配外部函数以避免嵌套函数被移动并且我认为几乎拥有它,但我缺少一些东西。
我在此页面上使用了 bobble bubble 的回答作为起点。 Regular Expression to match outer brackets
function\s.*\(.*\).*\{(?>[^.*\n*]+|(?R))*\}
这将匹配所有函数定义并捕获第一个大括号之前的参数。出于某种原因,当它是表达式的一部分时,我无法让它匹配换行符模式 [^.*\n*]+
,但是当它单独存在时,它匹配得很好。
我使用 Sublime 文本编辑器作为我的搜索工具,但它最终会出现在 JS 文件中,这可能是一种操作代码的简单方法。
这对我来说似乎匹配所有函数及其主体(除了在一行中定义的那些,这需要额外的表达式)
function.*\(.*\).*\{(.|\n)*?\n\}
或者,如果您不想捕捉主体,只需添加 ?:
function.*\(.*\).*\{(?:.|\n)*?\n\}
我们的想法是一直匹配到换行和右花括号结束:这样正文中的括号(或内部函数)就不会与我们的搜索发生冲突。
经过一天的摆弄,这里有一个正则表达式,它将分解一个 js 文件以匹配所有命名函数,然后将其分解为函数名称、参数和主体。与 Floribon 的解决方案不同,这将匹配任何格式样式,甚至缩小,并忽略嵌套的大括号和函数。
function\s+(?<functionName>\w+)\s*\((?<functionArguments>(?:[^()]+)*)?\s*\)\s*(?<functionBody>{(?:[^{}]+|(?-1))*+})