2009-01-22 7 views
1

J'ai un fichier qui contient un mish-mash de villes, états et codes postaux. Exemple:RegEx (?) - comment analyser les codes postaux hors texte?

Munson 11010 Shelter Island Heights. . . .. 11965 Brentwood 11717 Halesite 11743

Je dois saisir tous les codes postaux de ce texte. Ils ne sont que 5 chiffres (no 5 + 4), et il n'y a pas d'autres chiffres en dehors des zips. Cela semble être une chose assez simple, mais je ne sais pas du tout comment faire l'expression.

Je connais un peu de PHP donc c'est ma langue préférée, si possible. Idéalement, je voudrais afficher la sortie 1-zip-par-ligne afin que je puisse copier/coller quelque chose comme Excel.

Merci pour toute aide!

Répondre

0

Le code suivant doit vous envoyer dans la bonne direction:

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

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

print_r($matches); 
?> 
3
preg_match_all('[^0-9]([0-9]{5})[^0-9]', $input, $out); 
foreach($out as $val) 
    echo $val[1] . "\n"; 
+0

Vous êtes un brave pour s'aventurer dans PHP à nouveau après toutes ces années .... :-P –

+0

Selon l'OP, il n'y a pas besoin de encadrer la regex, mais si je le faisais j'utiliserais les limites de mots - '/ \ b \ d {5} \ b /' - ou - lookarounds - '/ (?

0

Great! Merci beaucoup - voici ce que je fini par utiliser:

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

foreach($matches[0] as $zip){ 
    echo $zip.'<br/>'; 
    }; 
Questions connexes