正则表达式记事本++函数列表

时间:2017-02-23 16:32:16

标签: regex notepad++

我正在尝试创建一个正则表达式,该表达式将使用functionList.xml文件为记事本++内的专有编程语言创建函数列表。正则表达式需要按照以下语法捕获任何MethodFunctionMacro的所有实例:

 Method Blah1(pParam1, pParam2)
   [New] dynamicVar = "string"
   [New] dynamicVar2 = 4
   [New] result = Bar2(dynamicVar, dynamicVar2)
 End Method

 Function Bar2(pParam3, pParam2)
   Foo3
   Return pParam3 && pParam2
 End Function

 Macro Foo3()
 End Macro

因此,正则表达式应捕获上述示例中的3个实例。

链接到regexr:http://www.regexr.com/3fcd7

functionList.xml

        <parser
            displayName="MOX"
            id         ="mox_function"
            commentExpr="(?s:/\*.*?\*/)|(?m-s://.*?$)"
        >
            <function
                mainExpr="^(s|Method|Macro|Function)"
            >
                <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 :(得分:2)

试试这个。

(?m)^(Method|Macro).*\(.*\)\n.*\n?^\s?End.*$

https://regex101.com/r/pAkFDU/