は、私が最初になぜJavaの正規表現では、星の数量子がプラスの数量子より貪欲ですか?
<LogicalID>SupplyChain</Logical>
からLogicalID
とSupplyChain
から抽出しようとしているテキストは、私は、次の正規表現を使用しています
["D", "SupplyChain"]
を次のようにこれは
.*([A-Za-z]+)>([A-Za-z]+)<.*
マッチ私は絶望的に、プラスの代わりにアスタリスクを使ってみました:
.*([A-Za-z]*)>([A-Za-z]+)<.*
これは完全に一致しています。
ドキュメントでは、*
は0回以上一致し、+
は1回以上一致します。 +
よりも*
が欲しいのはなぜですか?
編集:これは以下のケースではないことが指摘されています。操作の順序は、最初の一致グループが実際にnullである理由を説明します。
グレディエはどういう意味ですか? '。*'の場所を '。+'で変更しようとしましたか?それは貪欲ではなく、ここで重要なものを置く順序です。 – Pshemo
それは貪欲のように思えました。実際は実行の順序です。私は@Airosの下の答えでこれを集めました。 – duber
最初の正規表現で '?'の後ろに '?'を置くと、 '。*?([A-Za-z] +)>([A-Za-z] +)<。*' 。私は物事の仕方を見るのを助けるかもしれないからそれを指摘していますが、あなたの正確な要求に応じて、@ anubhavaの答えはおそらくもっと良いでしょう。 – ajb