こんにちは私は非常に特定の文字列構文に一致する正規表現パターンが欲しいです。以下は私がまとめたパターン文字列です。それは複雑な上あまりにもあり、それはいくつかのケースではなく、他に動作し、私はかなり確信している:特定の構文に一致する正規表現
\[\CONTENT\((?:(?:(?:(\w+) ?= ?((?:"(?:[^"]+)")|(?:'(?:[^']+)')|(?:(?:[^"',]+))) ?, ?)+(?:(?:\w+) ?= ?(?:(?:"(?:.+)")|(?:'(?:.+)')|(?:(?:[^"',]+)))))|(?:(?:\w+) ?= ?(?:(?:"(?:.+)")|(?:'(?:.+)')|(?:(?:[^"',]+)))))\)]
私が一致しようとしている文字列の構文は以下の通りです:
[CONTENT(Name="value, Name2='value2', Name_3 = value3, Name4= "value 4 \" includes an escaped quote")] etc
返信したいマッチグループは以下の通りです
Match Group 1 - Match 1: [CONTENT(Name="value", Name2='value2', Name_3 = value3, Name4= "value 4 \" includes an escaped quote")] Match Group 2 - Match 1: Name="value" Match Group 2 - Match 2: Name Match Group 2 - Match 3: value Match Group 3 - Match 1: Name2='value' Match Group 3 - Match 2: Name2 Match Group 3 - Match 3: value2 Match Group 4- Match 1: Name_3 = value3 Match Group 4- Match 2: Name_3 Match Group 4- Match 3: value3 Match Group 5 - Match 1: Name4= "value 4 \" includes an escaped quote" Match Group 5 - Match 2: Name4 Match Group 5 - Match 3: value 4 \" includes an escaped quote
私がマッチグループを参照するとき、私はマッチグループを参照しています。結果は上記と同じである必要はありませんが、可能な場合は類似している必要があります。
私はシンプルなRegexでうまくいくが、見回りなどで頭を上げることはできない。 "Name = Value"セットは、それぞれが '、'で区切られた数多く(おそらくは無制限の回数) '(コンマ) - 最後のセットを除いて(最後の名前/値セットの後には、'、 '(カンマ)は付きません)。 '='(等号)記号の両側と '、'(カンマ)の両脇にスペースを入れることができます。
これは正規表現または何を行うにはあまりにも複雑である場合、私は知らない(それがある場合、私は誰もがそのような文字列を解析する方法についての代替として与えることができます任意の提案に開いている。)
誰もが提供できるお手伝いをありがとう。
クリス
例のデータの最初の属性と値のペアは、 'Name =" value、 '(値には閉じ引用符がありません)、最後の属性/値ペアにはエスケープされた引用符を含む適切に引用された値があります。不足している最初のものは、誤った引用符をタイプミスですか? – ridgerunner
これは、多くの不要な非キャプチャグループです。 –