私はこの質問に本当に苦労しています:
import java.util.regex.*;
class Regex2 {
public static void main(String[] args) {
Pattern p = Pattern.compile(args[0]);
Matcher m = p.matcher(args[1]);
boolean b = false;
while(b = m.find()) {
System.out.print(m.start() + m.group());
}
}
}
上記のプログラムを次のコマンドで実行した場合:
java Regex2 "\d*" ab34ef
を出力します01234456
。私はこの出力を本当に理解していません。各文字について、次のインデックスを検討してください。
a b 3 4 e f
^ ^ ^ ^ ^ ^
0 1 2 3 4 5
出力されるべきではなかったの0123445
ですか?
私はよく読んでいて、RegExエンジンも文字列の終わりを読み取るように見えますが、理解できません。誰かがその結果をどのように得ているかについてのステップバイステップガイドを提供できれば幸いです。つまり、それぞれの数字をどのように見つけているかです。