1

この正規表現を考えると:

x[^x]*+x

および照合用のこの入力文字列:

xbbbx

xbbbx結果は、インデックス 0 から始まりインデックス 5 で終わる一致したテキストです。

しかし、正規表現と文字列の両方で最後の文字xZに変更するだけで、次の正規表現が得られます。

x[^x]*+Z

そしてこの入力文字列:

xbbbZ

結果は: no match foundです。

1 文字の変更で、このような動作の変更が生じるのはなぜですか?

4

1 に答える 1

3

その理由は、シンボルに可能な限り一致する「所有格」量指定子を使用しているためです。

したがって、この場合xbbbZ、正規表現x[^x]*+は、行末まですべての非 x 文字と一致し、そこで停止します。input 内の "Z" は既に消費されていますxbbbZ

この正規表現 は、「所有」量指定子に達したときに停止する必要があるため、x[^x]*+xで機能します。入力の末尾に があるため、所有量指定子が停止します。これにより、正規表現の最後の部分を と一致させることができます。xbbbxxxxx

Javaチュートリアル ページの最後に、所有量指定子の別の例が表示されます。

于 2013-06-20T19:25:02.550 に答える