我正在尝试构建一个正则表达式来识别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*(\([^()]*\))
遗憾的是,它不会忽略带有空括号的情况。
答案 0 :(得分:1)
将[^()]*
更改为[^()]+
。 +
使前一个选择器匹配1次或多次,而*
使它与匹配器0次或多次。您可以在此处了解更多信息:Difference between * and + regex
这是您的正则表达式应最终显示为:
Property?\s+(\w+)\s*(\([^()]+\))