$str = "Data = [ {"name": "test","Address": "UK" "currency": "£" },{"name": "test2","Address": "US" "currency": "$" },{"name": "test","Address": "eur" "currency": "E" }
我要顯示所有地址什麼是匹配單行與多重匹配的正則表達式?
其不支持多行字符串。這一切都一個字符串
請在這個
感謝幫助, TREEĴ
$str = "Data = [ {"name": "test","Address": "UK" "currency": "£" },{"name": "test2","Address": "US" "currency": "$" },{"name": "test","Address": "eur" "currency": "E" }
我要顯示所有地址什麼是匹配單行與多重匹配的正則表達式?
其不支持多行字符串。這一切都一個字符串
請在這個
感謝幫助, TREEĴ
這應該工作:
while ($str =~ /\"Address\":\S+\"(.*?)\"/g) {
print "Address = $1\n";
}
你的字符串是JSON! Treat it as such!
編輯:我是個白癡,無法分辨問題標記爲perl而不是PHP :-)鏈接被修正。
修正,棒材'數據='開頭。你從哪裏得到數據? – fredley 2010-08-31 15:58:37
類似:
my $str = q(Data = [ {"name": "test","Address": "UK" "currency": "£" },{"name": "test2","Address": "US" "currency": "$" },{"name": "test","Address": "eur" "currency": "E" });
my @addresses = $str =~ /"Address":\s*"([^"]*)"/g;
print "@addresses\n";
HTH,
保羅
(PS:後實際的代碼,而不是僞代碼...)
你通過使用正確的工具來完成這項工作。在這種情況下,你修復損壞的JSON用正則表達式,然後使用JSON
得到數據:
#!/usr/bin/perl
use strict;
use warnings;
use JSON;
my $input = <DATA>;
my ($json) = $input =~ /DATA = (.*)/;
my $data = decode_json $json;
for my $record (@$data) {
print "$record->{name} has address $record->{Address}\n";
}
__DATA__
DATA = [ {"name": "test", "Address": "UK", "currency": "£" }, {"name": "test2", "Address": "US", "currency": "$" }, {"name": "test", "Address": "eur", "currency": "E" } ]
不,g修飾符確保獲得所有匹配! – ennuikiller 2010-08-31 16:07:09
對不起我的錯誤! – Tree 2010-08-31 16:08:37