2016-11-28 7 views
1

ダウンボートまたは重複としてマークする前に - 特に免責事項をお読みください。空白で区切られた整数のリストをグループに分割する正規表現

私は整数の単純なリストを持っています。たとえば、1 23 765 23 25 67 12(数字は関係ありませんが、任意の長さが可能です)。私は別のグループ内のそれぞれの数を、1つの試合に、この出力を分割したいと思いますので、私は正規表現を作成しました:

(\d+)(?:\s(\d+))*

次のようにこの私の理解では、次のとおりです。数

  • キャプチャを最初のグループ
  • にスペース(私は\sだけではなくスペースで承知している)と番号のセットを見つけると、次のグループには、この番号を入れ

しかし、Regex101の出力は異なります。これは最初のリスト(この場合は112)の最初と最後の数字だけを返します。ここにはLINKがあります。

出力に複数の行がある場合、各行は別々の一致であり、その中のすべての整数はグループに分けられます。

免責事項:文字列操作をサポートするプログラミング言語を使用して分割することでこれを行うことができますが、なぜこれが機能しないのか不思議で、私は説明を探しています。結局のところ、私が発見したすべての解決策がsplit()を使用して暗示されていた(または、このメソッドは<insert your programming language here>に名前が付けられています)ので、インターネットを介してそのようなソリューションの例を見つけることもできませんでした。

+0

あなたは解決策ではなく、説明だけを探していますか? Regex101は限られた数の正規表現のフレーバしかサポートしていません。 .NETでは、PythonのPyPi regexモジュール、あなたはその正規表現ですべてのキャプチャを取得します。 –

+1

正規表現のフィドルが実際に1つのマッチを表示しているかどうかはわかりません。逆に、青色の数字はパターン「\ d +」に一致するように見えます。あなたは、Regex101以外の言語やツールの文脈でこれを尋ねたいかもしれません。 –

+0

類似のパターンについては、http://stackoverflow.com/questions/24857005/why-does-a-repeated-capture-group-return-the-stringsで素敵な説明があります。あなたの問題を特定しない限り、その質問はそれの欺瞞です。 –

答えて

0

あなたは単語の境界として\bを使用するので、

\b(\d+)\b 

Regex101などのキャプチャグループ内の各整数を一致させることができます:https://regex101.com/r/PZlHze/3 編集:私は、正規表現にも合致するようにgグローバルフラグが必要であることを言及したいと思います最初のものだけではありません!

+1

'\ b'sは必要でさえありません。 https://regex101.com/r/QOt4S5/1 – Fallenhero

+0

を参照してください。これは2番目の部分には応答しません。 – Fallenhero

+0

@Fallenheroと同様に、これはパート2には答えません。 – Asunez

関連する問題