我正在为Notepad ++编写函数列表解析器以添加对Nasal的支持。
我使用以下正则表达式:
^[\t ]*(var[\n\s]+)?([_A-Za-z]?[\w_]*)[\n\s]*=[\n\s]*func[\n\s]*(\([^\)\(]*\))?
:Debuggex Demo
...匹配这两种类型的有效声明:
foo = func...
var foo = func...
为了从这个正则表达式的匹配中进一步提取函数名foo
,我能想到的最好的是:
(var[\n\s]+)?([_A-Za-z]?[\w_]*)
:Debuggex Demo
使用此匹配" foo"或者" var foo",视情况而定。什么是正则表达式可以忽略子串var[\n\s]+]
的存在,所以它只提取" foo"对于功能列表?
非常感谢。
答案 0 :(得分:3)
您可以使用\K
功能删除匹配结果左侧的所有内容:
(?:var\s+)?\K([A-Za-z_]\w*)\s*=\s*([A-Za-z_]\w*)
(请注意,此功能仅适用于最新版本的np ++)
答案 1 :(得分:0)