2016-05-17 5 views
0

正規表現を使ってこの文字列を解析するにはどうすればよいですか?正規表現を作成してこの文字列を解析する方法

"desc: random text string, sender: James, se-status: red, problem-field: I'm a problem field, I'm a problem field, action: runs, target: John, ta-status: blue, status-apply: red, lore: lore ipsum dolor sit amet" 

キーと値を取得するグループが必要です。 "problem-field"には引用符があることに注意してください。グループはキーを取得し、次のキー名の前に最後のカンマを配置する必要があります。

これは例の文字列です。他の文字列は異なるフィールド名を持つことができるので、正規表現はsenderactionのような特定のフィールド名と一致しないはずです。

期待される結果のグループ:JS: deserializing a string with a JSON-like structure

を:

1. "desc" 
2. "random text string" 
3. "sender" 
4. "James" 
5. "se-status" 
6. "red" 
7. "problem-field" 
8. "I'm a problem field, I'm a problem field" 
9: "action" 
10."runs" 
11."target" 
12."John" 
13."ta-status" 
14."blue" 
15."status-apply" 
16."red" 
17."lore" 
18."lore ipsum dolor sit amet" 

私はこれに私の答えを改善しようとしたときにこの質問が始まっのみ

SOここで疑問、問題のフィールドが1つの結果である必要がありますのでご注意ください

私は古典的なforを実行しましたが、ユーザーReduは正規表現ベースの回答を作成しました。しかし、フィールド名を修正する必要があったので、私は好きではありませんでした。だから私は最後のカンマを確認するために戻って行くグループをキャプチャして正規表現を作成しようとしましたが、私はすぐに私の正規表現のスキルはそれほど(まだ)行くことはないことを発見した。だから、私はこの質問を作成することで、そこから正規表現のマスターを学ぶことができると思った。

+0

で区切っすべてのキー/値をキャプチャします。キーは最後のカンマとの間のものです: –

+0

アクションの前に二重スペースが意図されていますか? –

+0

いいえ...編集済みです。しかし、スペースは重要ではありません。 –

答えて

1

この正規表現はあなたを助けることができる:

([\w-]+): ([\w,\s']+)(?:,|$) 

Demo

それは挑戦だ:

+1

問題のフィールドに ':' – Nick

関連する問題