2016-08-22 85 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";} 

之间“”方面,我需要得到{}内的值,是""之间正则表达式来获得

+0

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

+4

[RegEx:Grabbing values在引号之间](http://stackoverflow.com/questions/171480/regex-grabbing-values-between-quotation-marks) – Xufox

回答

0

通过更好的办法是使用unserialize()(如果你PHP下):

$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); 

之后,你就会有一个美丽的阵列,看到a demo on ideone.com


提供另外, 不太合适解决方案

\w+:"(\w+)" 

见演示了这一项上regex101.com

1

您可以使用此"\w*"Here是测试。

0

我不知道这是否是一个可能的方案,但你提到的“{}内”,所以,如果不需要引用号码可以在大括号外的发生,这应该为你做它:

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

它匹配引号内的数字,然后使用积极的预测,确保}在任何{之前。

See it here at regex101