0

私はいくつかのVBコードを通過するために正規表現を使用しています.フォームのステートメントを見つけたいです-

    ABC.Transaction = GlobalCommArea

残念ながら、一部のステートメントはコード内でコメントアウトされています。VB の 1 行のコメントは一重引用符で始まるため、検索すると次のような結果が得られます -

        ' ABCD.Transaction = GlobalCommArea    <-- incorrect
  ' PQR.Transaction = GlobalCommArea           <-- incorrect
  WXY.Transaction = GlobalCommArea             <-- correct
      WXY.Transaction = GlobalCommArea ' 2012      <-- correct

次のコードを使用して、一重引用符の存在を検出して除外しようとしました-

     public static void test2()
     {
    String[] lines = new String[20];

  lines[0] = "' ABCD.Transaction = GlobalCommArea";
  lines[1] = "   ' PQR.Transaction = GlobalCommArea";
  lines[2] = " WXY.Transaction = GlobalCommArea";
  lines[3] = "WXY.Transaction = GlobalCommArea ' 2012";

  String regex;
  regex = "^\\s*[^']*\\s*.*.Transaction\\s*=\\s*GlobalCommArea"; // the regex that I am using

      Pattern p = Pattern.compile(regex);


  for(int i=0; i<=3; i++)
  {
     Matcher m = p.matcher(lines[i]);

     if(m.find())
     {
        System.out.print("Yes\t");
     }
     else
     {
        System.out.print("No\t");
     }

      System.out.println(lines[i]);
     }
    }

ただし、正規表現は機能しませんでした。私は次の出力を得ました -

    Yes ' ABCD.Transaction = GlobalCommArea
    Yes    ' PQR.Transaction = GlobalCommArea
    Yes  WXY.Transaction = GlobalCommArea
    Yes WXY.Transaction = GlobalCommArea ' 2012

行頭の一重引用符 (空白を除く) を検出し、それらの行を回避する正規表現を作成するにはどうすればよいですか?

4

1 に答える 1

1

.*beforeのためにそれらすべてに一致しTransactionています。次のように変更してみてください。

regex = "^[^']*\\.Transaction\\s*=\\s*GlobalCommArea";
于 2012-04-17T21:44:38.630 に答える