正则表达式检测“函数foo(){//带注释”?

时间:2017-07-12 22:43:02

标签: regex xml parsing notepad++

我有一个JavaScript functionList解析器可以工作,但是如果括号前面有空格或者函数行中有注释,它就看不到函数:

 function parserworks(){ 
 function parserfails (){
 function parserfails(){//comments make the parsing fail 
 function parserfails ( v1:int; v2:byte ):int{

如何检测和解析以“function”开头并以“(”结尾的任何单词,所以“foo(v1:int; v2:byte):int //”,无论后面写的是什么(?

这是.xml中的解析定义:

        <parser id="js_function" displayName="Javascript" commentExpr="((/\*.*?\*)/|(//.*?$))">
            <function
                mainExpr="((^|[\s]+|[;\}\.])([_A-Za-z][\w_]*\.)*[_A-Za-z][\w_]*[\s]*[=:]|^|[\s;\}]+)[\s]*function([\s]+[_A-Za-z]?[\w_]*\([^\)\(]*\)|\([^\)\(]*\))[\n\s]*\{"
                displayMode="$className->$functionName">
                <functionName>
                    <nameExpr expr="[_A-Za-z][\w_]*[\s]*[=:]|[_A-Za-z]?[\w_]*[\s]*\("/>
                    <nameExpr expr="[_A-Za-z]?[\w_]*"/>
                </functionName>
                <className>
                    <nameExpr expr="([_A-Za-z][\w_]*\.)*[_A-Za-z][\w_]*\."/>
                    <nameExpr expr="([_A-Za-z][\w_]*\.)*[_A-Za-z][\w_]*"/>
                </className>
            </function>
        </parser>

1 个答案:

答案 0 :(得分:1)

    /function.*(\s+\()|(\/\/)/

尝试一下