MatcherクラスのfindをEclipseでデバックする時の注意点
やること
MatcherクラスのfindをEclipseでデバックできないのを再現
原因を突き止めることはやってない
Let's 再現
java.util.regex.Matcherのfindメソッドをデバックします。
デバックで使用するのはEclipseのExpressionsです。
試しにこんなコードをデバックしますよ。
Matcher matcher = Pattern.compile(regex).matcher(input);int i = 0;
while (matcher.find()) {
System.out.println("ループ" + ++i + "回目です。");
}
例えば
String regex = "no[0-9]"
String input = "no0/no1/No2/no3"
としてみましょう。正規表現で一致する no0,no1,no3 なので3回ループが実行されます。
その時の出力は、次のようになります。
ループ1回目です。
ループ2回目です。
ループ3回目です。
それでは今回のテーマ、デバックをしてみます。
一回目は、期待通りに成功するパターンをやります。
variablesを見ながらステップオーバで検証
ループ1回目です。問題ない。
ループ2回目です。
ループ3回目です。
もう一度。
今度は、失敗するパターンです。
Expressionsでmatcher.find()の値を監視した状態でステップオーバで検証
一度もループに入ること無く失敗。
原因はわかりませんでしたが、デバックするときは気をつけて下さい。