2017-03-31 5 views
0

まずの途中でキャプチャグループを繰り返し対繰り返しグループをキャプチャ:Iknowthisquestionhasbeenbeatentodeath.複雑な正規表現

第二:私はすべてのリソース(オンラインエディタ、RexEggregular-expressions.infoを見てきました等)...私は過去数年間にわたって考えることができ、私はまだ正規表現のこの部分を把握することはできません。どのようなRegExを使用しても、私のために働くことは決してないようです。

今ハウスキーピングが邪魔であること:

私は、私は正規表現をするのに非常に適していると考えていることから、一部のデータを抽出する必要がある大量のテキストを持っています。

テキストは次のようになります。

2017年3月31日9時41分18秒EDT [12708から4]パラメータ:$ 1 = '0'、$ 2 = 'ON'、ON $ 3 =」 「

はかなり明らかに、私は$1$2$3の値を求めています。この特定の例では、3つの変数を持っていますが、それは私が次のことをキャプチャします正規表現をしたい1および15

の間で一般的です:ON

  1. $ 1
  2. '0'
  3. $ 2
  4. 」 「
  5. $
  6. 3 '
' ON

\d{4}.+\[[\d-]*\].+?parameters:\s((\$\d+)\s?=\s?(['\d+\w+]+))

が、プラス、括弧とコンマの無い組み合わせ私が欲しいものに近いものを生成します。

これが私の最初のグループにマッチする正規表現は、あります。文字列からコンマを削除して一緒に詰めても、キャプチャすることはできません。

この男はすべてをキャプチャしますが、グループは意味をなさない:

\d{4}.+\[[\d-]*\].+?parameters:\s(((\$\d+)\s?=\s?(['\d+\w+]+),?\s?)+)

誰かがここに私の不幸を終了し、テキストが分離されている場合、正規表現で繰り返されるテキストをキャプチャする方法を私に説明することができます私が気にしないキャラクターによって?

+1

「\ G (?:^)、|パラメータ:)\ s +(\ $ \ d +)= '(\ w +)' 'はあなたのものであるべきである –

+0

まだ1つしか捕捉できませんでした。まだ捕獲されていません – Brandon

+0

セバスチャンの言及を少し修正したパターンで複数試してみてください:['(?:\ G(?!^)、| parameters :) \ s *(\ $ \ d +)\ s * = \ s * '([^'] +) '\ s * '](https://regex101.com/r/3nHI53/1)。あなたが必要とするものでないならば、あなたは純粋な正規表現でそれを得ることができません。これは、パターンに定義されている数のグループしか存在しないため、6つのグループを与えます。 W帽子はプログラミング言語ですか? –

答えて

0

私はあなたがこの(\$\d) = '(.+?)'example

のように設定した各値を抽出するために来正規表現を使用することをお勧めその後することができますすべての一致をループ。グループ1はラベル(すなわち$ 1)になり、グループ2は値(すなわち0)になります


「小さな捕捉グループは、最後の反復。反復グループの周りにキャプチャグループを置いてすべての反復をキャプチャするか、データに興味がない場合はキャプチャしないグループを使用する "(regex101

+0

2つのグループを別々にキャプチャすることを妨げている問題には、無関係なものがたくさんあります。私はそれが最後の反復だけをキャプチャすることを認識しています。私は繰り返しグループの周りにキャプチャグループを置くことでそれを回避しようとしましたが、うまくいきませんでした。 – Brandon

関連する問題