2

我正在尝试使用 RegEx 解析一些代码,并且我需要匹配任何包含未被注释掉的代码的行。

例如:

Public Function SomeFunc(SomeVar As Integer) As Boolean
               Dim APSHSwitch, objDB, sql, iCnt, vADOConn, result As New Object
    '''        Dim BPSHSwitch, objDB, sql, iCnt, vADOConn, result As New Object
               'Dim CPSHSwitch, objDB, sql, iCnt, vADOConn, result As New Object\
End Function

我需要匹配:

Dim APSHSwitch, objDB, sql, iCnt, vADOConn, result As New Object

到目前为止,我有以下内容,这三个都匹配。

Dim\s
(?<varNames>([A-Z0-9]+(,\s){1})+[A-Z0-9]+)
\sAs\s
(?<newKeyWord>(New\s)?)
(?<varType>([A-Z]+))

我只需要匹配没有评论的第一行。我想不通。

4

3 回答 3

0

首先,如果您使用 /* */ 或任何嵌套评论,我什至不会尝试正则表达式。

但是,如果您只是在寻找以 开头的行"'''",那么我会匹配注释行而不是未注释的行,然后相应地调整您的条件。

例子

"^\s*'''\s*.*$

将匹配注释行

于 2012-11-08T19:49:21.560 回答
0

在你的正则表达式的开头添加一个否定的后视

(?<!^\s*\')

Explanation: The line doesN'T (?<!) start with (^) any amount of white space (\s*) and an apostrophe (\').
于 2012-11-08T19:50:02.930 回答
0

我能够使用以下正则表达式与多行 ON 获得此匹配

(?<!^\s*\'+\s*)
Dim\s
(?<varNames>([A-Z0-9]+(,\s){1})+[A-Z0-9]+)
\sAs\s
(?<newKeyWord>(New\s)?)
(?<varType>([A-Z]+))

感谢 LastCoder!

于 2012-11-09T00:29:41.900 回答