2016-08-22 5 views
0
a:29:{i:0;s:2:"34";i:1;s:2:"35";i:2;s:2:"37";i:3;s:2:"36";i:4;s:2:"38";i:5;s:2:"41";i:6;s:2:"33";i:7;s:2:"17";i:8;s:2:"20";i:9;s:2:"18";i:10;s:2:"19";i:11;s:2:"22";i:12;s:2:"23";i:13;s:2:"16";i:14;s:2:"21";i:15;s:2:"43";i:16;s:2:"70";i:17;s:2:"91";i:18;s:2:"50";i:19;s:2:"48";i:20;s:2:"49";i:21;s:2:"53";i:22;s:2:"47";i:23;s:2:"46";i:24;s:2:"44";i:25;s:3:"106";i:26;s:3:"121";i:27;s:2:"95";i:28;s:2:"86";} 

ich die Werte innerhalb des {} erhalten müssen, die zwischen ""Regex erhalten Bedingungen zwischen „“

+0

R Weg https://www.r-bloggers.com/how-to-extract-a-string-between-2-characters-in-r-and-sas/ – Nishad

+4

Mögliche Duplikat von [RegEx: Grabbing-Werte zwischen Anführungszeichen] (http://stackoverflow.com/questions/171480/regex-grabbing-values-between-quotations-marks) – Xufox

Antwort

0

Bei weitem besser wäre unserialize() zu verwenden (wenn Sie unter PHP sind):

$str = 'a:29:{i:0;s:2:"34";i:1;s:2:"35";i:2;s:2:"37";i:3;s:2:"36";i:4;s:2:"38";i:5;s:2:"41";i:6;s:2:"33";i:7;s:2:"17";i:8;s:2:"20";i:9;s:2:"18";i:10;s:2:"19";i:11;s:2:"22";i:12;s:2:"23";i:13;s:2:"16";i:14;s:2:"21";i:15;s:2:"43";i:16;s:2:"70";i:17;s:2:"91";i:18;s:2:"50";i:19;s:2:"48";i:20;s:2:"49";i:21;s:2:"53";i:22;s:2:"47";i:23;s:2:"46";i:24;s:2:"44";i:25;s:3:"106";i:26;s:3:"121";i:27;s:2:"95";i:28;s:2:"86";}'; 
$your_var = unserialize($str); 
print_r($your_var); 

Danach werden Sie eine schöne Reihe haben, sehen a demo on ideone.com


eine andere bereitzustellen, weniger geeignet Lösung:

\w+:"(\w+)" 

eine Demo Siehe hierzu ein auf regex101.com.

1

Sie dieses "\w*" verwenden können. Here ist der Test.

0

Ich bin mir nicht sicher, ob es ein mögliches Szenario ist, aber Sie erwähnen „im Inneren des {}“, also wenn unerwünschte zitierte Zahlen außerhalb der Klammern auftreten können, sollte dies es für Sie tun:

"(\d+)"(?=[^{]*}) 

Es stimmt mit der Zahl in Anführungszeichen überein, und verwendet dann eine positive Vorausschau, stellt sicher, dass eine } vor jeder { folgt.

See it here at regex101.