正则表达式查找参数化属性

时间:2018-11-12 09:49:31

标签: regex vb.net

我正在尝试构建一个正则表达式来识别VB的参数化属性。

我要匹配的参数化属性的示例代码

Public ReadOnly Property Test(v as String) As Integer
Public ReadOnly Property Test(ByVal v as String) As ReadOnlyCollection(Of Guid)

我要避免的属性的示例代码

Public ReadOnly Property Test() As Integer         
Public ReadOnly Property Test() As ReadOnlyCollection(Of Guid)

基本上,如果有任何参数传递给属性,我希望它匹配,但是在其他情况下,其他括号与属性的类型在同一行中可能没有参数。 我看到的模式是

  

属性[0个或多个空白] [下一个单词] [0个或多个空白]([0个或多个空白]目标字符或忽略空格[0个或多个空白])

这是我到目前为止所拥有的

Property?\s+(\w+)\s*(\([^()]*\))

遗憾的是,它不会忽略带有空括号的情况。

1 个答案:

答案 0 :(得分:1)

[^()]*更改为[^()]++使前一个选择器匹配1次或多次,而*使它与匹配器0次或多次。您可以在此处了解更多信息:Difference between * and + regex

regex101 demo

这是您的正则表达式应最终显示为:

Property?\s+(\w+)\s*(\([^()]+\))