RegEx (?) - как разобрать почтовые индексы из текста? - PullRequest
1 голос
/ 22 января 2009

У меня есть файл, который содержит смесь городов, штатов и почтовых индексов. Пример:

Мансон 11010 Высоты Острова Шелтер. , , .. 11965 Brentwood 11717 Halesite 11743

Мне нужно извлечь все почтовые индексы из этого текста. Они только 5 цифр (нет 5 + 4), и нет никаких других чисел, кроме почтовых индексов. Это выглядит довольно просто, но я совершенно не представляю, как сделать выражение.

Я знаю немного PHP, так что это мой любимый язык, если это возможно. В идеале мне бы хотелось, чтобы он отображал выходные данные 1 zip-per-line, чтобы я мог скопировать / вставить что-то вроде Excel.

Спасибо за любую помощь!

Ответы [ 3 ]

3 голосов
/ 22 января 2009
preg_match_all('[^0-9]([0-9]{5})[^0-9]', $input, $out);
foreach($out as $val)
    echo $val[1] . "\n";
0 голосов
/ 22 января 2009

Отлично! Большое спасибо - вот что я в итоге использовал:

preg_match_all("/\d{5}/", $input, $matches);

foreach($matches[0] as $zip){
    echo $zip.'<br/>';
    };
0 голосов
/ 22 января 2009

Следующий код должен отправить вас в правильном направлении:

<?php
$str = 'Munson 11010 Shelter Island Heights. . . .. 11965 Brentwood 11717 Halesite 11743 ';

preg_match_all("/\d{5}/", $str, $matches);

print_r($matches);
?>
...