トップページに戻る    次の正規表現パズルへ    前の正規表現パズルへ

5-12 コメント扱いでない文字を検索

正規表現パズル

VB.NETのソースから、
コメント扱いでないabcdがある行を検索する。

検索前


検索後


対象データ

    Dim abcd As String
    'Dim abcd As String
    Dim workInt As Integer 'abcd
    abcd = "XXXX"
    Dim WorkStr1 = "abcd"
    'Dim WorkStr2 = "abcd"
    Dim WorkStr3 = "'""abcd"
    Dim WorkStr4 = "a""b""cd" 'abcd


正規表現

^((?!'(?=(([^"]*"){2})*[^"]*$)).)*abcd.*$


解説

行頭からの肯定先読みで、
ダブルコートが偶数個続くシングルコート以外を調べて行って、
コメント扱いでないabcdがあるか調べてます。

コメントや文字列に対する考慮を緩めるなら
^(?!\s*')(?=.*abcd).*
や
^[^']*abcd.*
でもいいです。