Как вычесть подстроку из строки JSON с помощью регулярного выражения? - PullRequest
0 голосов
/ 08 ноября 2010

Итак, я нашел эти ссылки, связанные с задачей.Первый с использованием python , второй с использованием c # , третий с использованием Perl

Теперь я слишком новичок в Perl и хочу сделатьработать с некоторыми потоками JSON из Twitter.Я смотрю на это:

..E","location":"Hollywood, Los Angeles, CA ","screen_name":"i..

Как мне найти "location": с помощью регулярных выражений, а затем назначить переменную, содержащую Hollywood, Los Angeles, CA?

sub get_location {
# pseudo code:  
# look for "location":"xxxxxxxxxxxxxxxx" 
# assign $tmp_loc = Hollywood, Los Angeles, CA (in this case)
# return $tmp_loc; }

Ответы [ 4 ]

8 голосов
/ 08 ноября 2010

Perl имеет библиотеки для работы с JSON . Почему бы не использовать один из них?

В качестве альтернативы, если вы имеете дело с Twitter, почему бы не использовать Net :: Twitter , который выполняет вызовы API Twitter и возвращает результаты в виде структур данных Perl.

В наши дни во многих программах на Perl нужно знать, какие CPAN-модули будут соединены вместе. Если вы не используете CPAN, то вам не хватает возможностей Perl.

3 голосов
/ 08 ноября 2010
3 голосов
/ 08 ноября 2010

Вы действительно не должны использовать регулярные выражения везде, где вам нужно найти что-то в строке ... Они имеют свое назначение, но не здесь.

Если у вас есть строка в кодировке JSON, просто декодируйте ее.У меня нет опыта работы с Perl, но я вижу, что другие рекомендуют использовать модуль из CPAN .

0 голосов
/ 08 ноября 2010

Сначала вам нужно регулярное выражение, соответствующее тексту, который вы хотите захватить. Так как вы положили только фрагмент, я также добавлю только фрагмент.

$text = ' ..E","location":"Hollywood, Los Angeles, CA ","screen_name":"i..';
if( $text =~ /.*location":"(.[^"]+)",.*/ ) {
  $tmp_loc = $1;
}
return $tmp_loc;
...