1

この Java API (ctrl + f) + "グループ名" から直接:

グループに関連付けられたキャプチャされた入力は、常にグループが最後に一致したサブシーケンスです。定量化のためにグループが 2 度目に評価される場合、以前に取得された値があれば、2 度目の評価が失敗しても保持されます。たとえば、文字列「aba」を式 (a(b)?)+ と照合すると、グループ 2 は「b」に設定されたままになります。キャプチャされたすべての入力は、各一致の開始時に破棄されます。

キャプチャ グループがどのように機能し、それらが後方参照でどのように機能するかを知っています。しかし、私は上で引用した API ビットの要点を理解していません。誰かがそれを言い換えることができますか?

前もって感謝します。

4

2 に答える 2

2

この場合、キャプチャに名前が付いているかどうかは関係ありません。

次の入力テキストを検討してください。

foo-bar-baz

そしてこの正規表現:

[a-z]+(-[a-z]+)*

ここで問題は、グループ 1 によって何がキャプチャされるかです。

正規表現がテキストを進むにつれて、最初に一致-barし、次にグループ 1 の内容になります。しかし、それはテキストに続き、-bazグループ 1 の新しいコンテンツがどれであるかを認識します。

したがって、-bar「失われました」: 入力内の他のテキストがキャプチャ グループと一致したため、正規表現エンジンはそれを破棄しました。これが意味することは次のとおりです。

[t]グループに関連付けられたキャプチャされた入力は、常にグループが最後に一致したサブシーケンスです[強調鉱山]

于 2013-07-12T09:40:29.340 に答える