次の種類の文字列を解析しようとしています:
[key:"val" key2:"val2"]
内部には任意のkey: "val"ペアがあります。キー名と値を取得したいと思います。それらの好奇心のために、私はタスクウォリアーのデータベースフォーマットを解析しようとしています。
これが私のテスト文字列です:
[description:"aoeu" uuid:"123sth"]
これは、スペース以外のすべてのものがキーまたは値に含まれる可能性があり、コロンの周りにスペースがないこと、および値が常に二重引用符で囲まれていることを強調するためのものです。
ノードでは、これは私の出力です:
[deuteronomy][gatlin][~]$ node
> var re = /^\[(?:(.+?):"(.+?)"\s*)+\]$/g
> re.exec('[description:"aoeu" uuid:"123sth"]');
[ '[description:"aoeu" uuid:"123sth"]',
'uuid',
'123sth',
index: 0,
input: '[description:"aoeu" uuid:"123sth"]' ]
しかしdescription:"aoeu"
、このパターンにも一致します。どうすればすべての試合を取り戻すことができますか?
"some string".match(/regex/g)