Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在文件中找到javascript方法名称?_Javascript_Regex_C# 4.0 - Fatal编程技术网

如何在文件中找到javascript方法名称?

如何在文件中找到javascript方法名称?,javascript,regex,c#-4.0,Javascript,Regex,C# 4.0,有人能帮我在javascript文件中使用正则表达式查找方法名吗 (?!function\s+)([_$a-zA-Z][_$a-zA-Z0-9]*)(?=\s*\() 在尝试使用regexp解析JavaScript时,可能会遇到许多问题。首先,我们有一些在正常情况下会被lexer忽略的东西 WhiteSpace LineTerminator Comment 因此,留给我们的是一些好消息和一些坏消息。好消息是,我的简单regexp将涵盖大多数常见情况。只要文件写得很好,它就可以正常工作。坏消息是

有人能帮我在javascript文件中使用正则表达式查找方法名吗

(?!function\s+)([_$a-zA-Z][_$a-zA-Z0-9]*)(?=\s*\()
在尝试使用regexp解析JavaScript时,可能会遇到许多问题。首先,我们有一些在正常情况下会被lexer忽略的东西

WhiteSpace LineTerminator Comment 因此,留给我们的是一些好消息和一些坏消息。好消息是,我的简单regexp将涵盖大多数常见情况。只要文件写得很好,它就可以正常工作。坏消息是,如果您想覆盖所有角落的案例,您将得到一个巨大的regexp


我只是想说,匹配有效函数标识符的regexp会特别可怕。

你能举一个例子说明你正在尝试做什么吗?例如,如果我有一个名为file1.js的文件,其中包含类似于100个方法的。我开发了一个工具,我需要在其中找到这100个方法的。为了找到这个,我使用了基本信息。我使用文件流读取完整文件并存储在字符串数组中。之后,我拆分数组并搜索字符串“function”,并使用索引查找名称。但这是一项繁琐的任务。因此,我想使用正则表达式使用适当的标记器-regex是不够的。否。JavaScript语法太复杂,正则表达式无法可靠地解析它。正则表达式不仅不足以解析JavaScript,而且在一般情况下,在源文件中查找所有函数的“名称”并不总是一个有意义的概念。因为Javascript函数都是值,所以查找模块中所有函数的名称就像查找模块中所有数字的名称一样。@bobince-您会惊讶地发现,您可以如此接近。但我们永远不会接近100%。根据项目需求,编写适当的标记器可能不值得。根据我的经验,它至少需要350行(使用解析器组合器)和1000-5000行C(解析器生成器往往会生成巨大的代码文件。如果你手动编写,你就可以不用花1000行) WhiteSpace: '\u0009' '\u000c' '\u00a0' '\u180e' '\u2001' '\u2003' '\u2005' '\u2007' '\u2009' '\u202f' '\u3000' '\u000b' '\u0020' '\u1680' '\u2000' '\u2002' '\u2004' '\u2006' '\u2008' '\u200a' '\u205f' '\ufeff' LineTerminator: '\u000a' '\u000d' '\u2028' '\u2029'
function
a() {

}

function /*Why is this comment here!!!*/ a() {

}