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

これまでのところ、3つすべてに一致する次のものがあります。

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

複数行をオンにして次の正規表現を使用して、このマッチングを取得できました

(?<!^\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 に答える