【发布时间】:2017-02-25 01:45:31
【问题描述】:
我正在尝试创建一个正则表达式,它将使用 functionList.xml 文件为 notepad++ 内的专有编程语言创建一个函数列表。正则表达式需要按照以下语法捕获任何Method、Function 或Macro 的所有实例:
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 个实例。
正则表达式链接:http://www.regexr.com/3fcd7
函数列表.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>
【问题讨论】:
-
你有什么问题?
-
我需要一个正则表达式,它将选择存在 ("Method" AND "End Method") OR ("Macro" AND "End Macro") OR ("Function" AND“结束函数”)
-
如果Method和End之间有东西怎么办?它还应该匹配吗?
-
是的,Method和End之间可以有任何东西