小智 6
我有一个非常有效的javascript解决方案,与所有人的信仰相反...尝试这个,我已经使用它并且它工作得很好
function\s*([A-z0-9]+)?\s*\((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*\)\s*\{(?:[^}{]+|\{(?:[^}{]+|\{[^}{]*\})*\})*\}
https://regex101.com/r/zV2fO7/1
有一些事情,正则表达式不是很擅长.这并不意味着构建一个可行的表达式是不可能的,只是它可能不适合.其中包括:
Javascript函数块往往覆盖多行,并且您希望找到匹配的"{"和"}"括号,表示块的开始和结束,可以嵌套到未知深度.您还需要考虑评论中使用的潜在大括号.RegEx将为此感到痛苦.
但这并不意味着它是不可能的.您可能有关于您正在寻找的功能的性质的其他信息.如果您可以执行诸如保证注释中没有大括号并将嵌套限制到特定深度的事情,您仍然可以构建表达式来执行此操作.这将有点混乱,难以维护,但至少在可能的范围内.
不是,不是.
功能块不是常规的,因此正则表达式不适合作业.请参阅,为了捕获JS中的功能块,您需要计算实例{并对照实例进行平衡},否则您将匹配太多或太少.正则表达式不能进行这种计数.
只需读入您正在尝试查看的文件并递归管理嵌套.从概念上讲,这种方式非常容易管理.
| 归档时间: |
|
| 查看次数: |
1849 次 |
| 最近记录: |