0

次のような式を検証しようとしています。

SEN 3 00000001 HT 12.60 39.50

パターンを使用してSEN \\d{1} \\w{8} \\w{1,2} ([-+]?[0-9]*\\.?[0-9]*){1,2}。パターンはほとんど機能します。返されるグループは

SEN 3 00000001 HT 12.60

39.50失われたものと。原因は{1,2}、私のパターンの最後の数量条件 ( ) が だけで満たされているためだと考えてい12.60ます。

先読みを使用([-+]?[0-9]*\\.?[0-9]*)する文字量に基づいて、満たすために必要な量を設定する方法はありますか?\\w{1,2}

4

1 に答える 1

4

あなたはほとんどそれを手に入れました:)

あなたが犯したエラーは、最後に繰り返されているグループの外側にスペースを残していることです。12.60 と 39.50 の間にスペースがあるため、12.60 以外に一致するものはありません。

代わりに、次の正規表現を試してください。

SEN \\d{1} \\w{8} \\w{1,2}( [-+]?[0-9]*\\.?[0-9]*){1,2}

いくつかの最適化:

  • () を (?:) に置き換えます。これは、設計による場合を除き、定量化されると上書きされるためです。
  • \d{1} を \d に置き換えます。これらは同じものです。

デモ+説明: http://regex101.com/r/jQ7sP2

于 2013-01-02T19:27:27.370 に答える