【发布时间】:2012-05-26 19:25:14
【问题描述】:
我需要从网站获取不同类型的信息。就是知道格式是这样的(都在一行上):
"name":"BLAHBLAH","contact":{"phone":"12345","twitter":"BLAHBLAH"},
"location": "address":"NOTTELLING","lat":10,"lng":10,"postalCode":"1234",
"city":"BLAH","state":"BLAH","country":"BLAH"},
"categories":[{"id":"BLAH","name":"BLAH"}]
其中一些个人资料会缺少一两个街区,例如没有名字、没有城市等。 我试过这样的代码:
#get name
$content =~ m!","name":"(.*?)","contact":!igs;
say ("name:", $1) unless ($1 eq '');
#get street
if ($content =~ m!\},"location":\{"address":"(.*?)","lat":!igs)
{say ("street:", $1) unless ($1 eq '');}
#get city
if ($content =~ m!,"city":"(.*?)","state":!igs)
{say ("city:", $1) unless ($1 eq '');}
#get state
if ($content =~ m!,"state":"(.*?)","country":!igs)
{say ("state:", $1) unless ($1 eq '');}
然后我意识到当我使用重复模式时(例如
"city":"(.*?)","state":!igs
和
"state":"(.*?)","country":!igs)
结果将不准确。 (我猜 perl 在第一次到达“state”后会跳过字符串)我的问题是这是怎么发生的?以及如何解决?
【问题讨论】:
-
看起来像 JSON。您是否尝试过使用 JSON 解析器?
-
不,你能提供更多细节或教程吗?我对一切都很陌生
-
请使用谷歌。 JSON 是当今非常常见的格式,您会发现很多关于在 Perl 中使用它的信息。