尝试构建一个正则表达式,当不包含返回类型时,该表达式将查找对函数名称的所有分配。
到目前为止,我已经创建了此正则表达式,
(?s)Function(?:(?!End Function).)*?A =.*?End Function
我不熟悉的部分是如何避免使用从函数中找到的下一个单词对A
进行硬编码。
正则表达式引擎是Visual Studio的搜索对象,因此是.net。
//match
Function A() As Integer
A = 3
End Function
//do not match
Function Β() As Integer
A = 3
End Function
答案 0 :(得分:1)
您可以使用(\w+)
捕获名称,然后使用\b\1\b
向整个单词反向引用:
(?s)Function\s+(\w+)\b(?:(?!(?:End )?Function).)*?\b\1\b\s*=.*?End Function
^^^^^^^^^^ ^^^^^^
请参见regex demo
详细信息
\s+(\w+)\b
-1个或多个空格,然后捕获匹配一个或多个单词字符的第1组,然后是单词边界\b\1\b
-\1
与作为整个单词被捕获到第1组的文本相同(因为它被单词边界包围)。