0

単純な正規表現パターン if put a*( quantifier) で、実際には文字 a; が含まれているにもかかわらず、マッチャーのどの結果にも一致しない理由を知っていますか? (いずれにせよ、「」を使用しているため、空の文字列が見つかったという結果が返されるはずです)。他の文字でも機能します。たとえば、r* と b* では問題ありません。コンテンツが引用符または括弧 ("a*") で囲まれている場合に機能することを認識しています。引用符なしで b* では機能し、引用符なしで a* では機能しない理由を知りたいだけですが。

コード:

Pattern pat = Pattern.compile(args[0]);
        Matcher match = pat.matcher(args[1]);
while (match.find())
        {
            System.out.println("Indeed this the information I need:"+ match.group());

            System.out.println("Here it starts:"+match.start());
}       

「a」はメタキャラクターですが、「e」と「f」もメタキャラクターであり、それらを使用すると正常に機能することを認識しています。

コマンドラインに args[0] = a* args[1] = abba を入力として挿入します。

何か案が?前もって感謝します。

4

2 に答える 2

6

おそらく、*Java を実行しているシェルによって が拡張されているためです。の内容を印刷してみてくださいargs[0]。照合しているパターンが、照合しようとしているパターンとは異なることがわかると思います。

'a*'だけではなく、引数を引用することでこれを修正できますa*

于 2013-02-16T20:59:43.670 に答える
0

何かを選択するには、正規表現が次のようになっている"(a*)"必要があります。group(1)

于 2013-02-16T21:03:52.677 に答える