2017-09-12 9 views
1

私は、単一の入力値の説明を示します。この正規表現持っている:正規表現(複数の値)

(?:GTSET|GP0|GPP|L0)\|#0[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]*\|(.*) 

L0|#060066230-11f1-46db-ad89-2b91ffd42ec4|Processing 

をしかし、それは複数の値に来るとき - それは仕事をdoesntの - 不足していただきましたか!?

GP0|#3e7ea87a-6d25-4f18-a68a-3ccb18f72e57;L0|#03‌​e7ea87a-6d25-4f18-a6‌​8a-3ccb18f72e57|Argu‌​mentationshilfen;GTS‌​et|#25b6d12b-8e8b-42‌​33-8931-9c50587ca114‌​;GP0|#84e33f19-dc80-‌​4628-b292-a96090b1c7‌​02;L0|#084e33f19-dc8‌​0-4628-b292-a96090b1‌​c702|Medien (Videos/Grafiken/Bilder) 

GP0|#3e7ea87a-6d25-4f18-a68a-3ccb18f72e57;L0|#03e7ea87a-6d25‌​-4f18-a68a-3ccb18f72‌​e57|Argumentationshi‌​lfen;GTSet|#25b6d12b‌​-8e8b-4233-8931-9c50‌​587ca114;GP0|#84e33f‌​19-dc80-4628-b292-a9‌​6090b1c702;L0|#084e3‌​3f19-dc80-4628-b292-‌​a96090b1c702|Medien (Videos/Grafiken/Bilder);GP0|#a8629bc7-a09f-4c45-a864-8506e0‌​01ef66;L0|#0a8629bc7‌​-a09f-4c45-a864-8506‌​e001ef66|Technische Daten" 
+0

上記の文字列ごとに何を得ると思いますか?正規表現の背後にあるコードは何ですか? –

+0

以下の入力を仮定します:処理 'L0 |#060066230-11f1-46db-ad89-2b91ffd42ec4 |処理 ' – user3674148

+0

以下の値を入力すると、次のようになります: )GP0 |#3e7ea87a-6d25-4f18-a68a-3ccb18f72e57; L0 |#03 e7ea87a-6d25-4f18-a6 8a-3ccb18f72e57 | GTS et |#25b6d12b-8e8b-42 33-8931 -9c50587ca114; GP0 |#84e33f19-dc80-4628-b292-a96090b1c7 02; L0 |#084e33f19-dc8 0-4628-b292-a96090b1 c702 |メディエン(動画/グラフィック/画像) – user3674148

答えて

1

あなたはどんなマッチする否定文字クラスに改行以外の任意の0+文字に一致し(.*)パターン1+ ;以外文字その他を制限する必要がある、[^;]+(のための区切りであると思われるので、あなたが抽出する必要がある値)。

使用

(?:GTSET|GP0|GPP|L0)\|#0[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]*\|([^;]+) 

regex demoを参照してください。注:また、私は-[0-9a-f]{4}の3つを(?:-[0-9a-f]{4}){3}(3回の出現は-<4_HEX_CHARS>シーケンス)にマージしてパターンを少し収縮させました。また

var rx = /(?:GTSET|GP0|GPP|L0)\|#0[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]*\|([^;]+)/g; 
 
var strs = [ 'L0|#060066230-11f1-46db-ad89-2b91ffd42ec4|Processing', 'GP0|#3e7ea87a-6d25-4f18-a68a-3ccb18f72e57;L0|#03e7ea87a-6d25-4f18-a68a-3ccb18f72e57|Argumentationshilfen;GTSet|#25b6d12b-8e8b-4233-8931-9c50587ca114;GP0|#84e33f19-dc80-4628-b292-a96090b1c702;L0|#084e33f19-dc80-4628-b292-a96090b1c702|Medien (Videos/Grafiken/Bilder)', 'GP0|#3e7ea87a-6d25-4f18-a68a-3ccb18f72e57;L0|#03e7ea87a-6d25-4f18-a68a-3ccb18f72e57|Argumentationshilfen;GTSet|#25b6d12b-8e8b-4233-8931-9c50587ca114;GP0|#84e33f19-dc80-4628-b292-a96090b1c702;L0|#084e33f19-dc80-4628-b292-a96090b1c702|Medien (Videos/Grafiken/Bilder);GP0|#a8629bc7-a09f-4c45-a864-8506e001ef66;L0|#0a8629bc7-a09f-4c45-a864-8506e001ef66|Technische Daten']; 
 

 
for (var s of strs) { 
 
    var res = [], m; 
 
    while (m=rx.exec(s)) { 
 
    res.push(m[1]); 
 
    } 
 
    console.log(res); 
 
}

は、 (?:GTSET|GP0|GPP|L0)グループは、より良い冗長なバックトラックを避けるためにとして書かれていることに注意してください。