Thread Regulärer Ausdruck matcht nicht korrekt - JSON
(10 answers)
Opened by styx-cc at 2017-11-11 17:57
Hallo Community!
Ich versuche aneinandergereihte JSON-Datensaetze in einzelne aufzuteilen, leider matcht mein Regex das nur teilweise korrekt und ich finde auch nach einiger Recherche und ausprobieren keine funktionierende Lösung. Im Prinzip versuche ich, alle Folgen von [] einzufangen, denen ein weiteres [ oder nichts folgt. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #!/usr/bin/perl use strict; use warnings; my $string = '[1,962,[["x",0,"0.1","1.106"]]][1,963,[["x",0,"0.663","0.0"]]]'; $string .= '[1][1,562,[["x",0,"0.579","1.1"]]][1,563,[["x",0,"0.546","0.0"],["x",0,"0.94","1.8"]]]'; my @matches = ( $string =~ m/(\[.+?\])\[/g ); for (@matches) { print "$_\n"; } __DATA__ Erhofft: [1,962,[["x",0,"0.1","1.106"]]] [1,963,[["x",0,"0.663","0.0"]]] [1] [1,562,[["x",0,"0.579","1.1"]]] [1,563,[["x",0,"0.546","0.0"],["x",0,"0.94","1.8"]]] Realitaet: [1,962,[["x",0,"0.1","1.106"]]] [["x",0,"0.663","0.0"]]] [1,562,[["x",0,"0.579","1.1"]]] Versucht habe ich verschiedene Varianten: Code: (dl
)
1 my @matches = ( $string =~ m/(\[.+\])\[/g ); Aber mein Umgang mit Regulaeren Ausdruecken haelt sich so sehr in Grenzen, dass ich erstmal sogar über Greedy & not Greedy gestolpert bin. Kann mir bitte jemand erklären, wie ich zu einer Lösung komme und warum Zeile 8 so nicht funktioniert? Müsste er nicht zumindest [1][1,562,[["x",0,"0.579","1.1"]]][... zwei mal matchen? Lieben Gruß Last edited: 2017-11-11 18:09:18 +0100 (CET) Pörl.
|