2017-10-12 5 views
1

je besoin d'aide dans la situation suivante: pr_zip « someregexhere » MATCHSavec regex codes postaux spécifiques

Le problème est que je reviens 72701 et je ne veux pas retourner ce zip. Je veux seulement retourner ces zips.

je pensais faire quelque chose comme ça

7 (190)% |.? 7 (191)% |.? 7 (1949) |.?.? 7 (195)% 7 (1949). ?%

mais cela semble maladroit et il doit y avoir une meilleure façon.

'7 [1,2,5] [0,7,8,9,5] [0-9] [0-9]%)

Cela ne fonctionne pas parce qu'il tire plus zipcodes que j'ai besoin.

Quelqu'un a une idée?

71901% 
71902% 
71903% 
71909% 
71910% 
71913% 
71914% 
71949% 
71951% 
71956% 
71964% 
71968% 
72087% 
71834% 
71937% 
71839% 
71840% 
71854% 
71724% 
71730% 
71731% 
71747% 
71749% 
71750% 
71758% 
71759% 
71762% 
71765% 
71768% 
75501% 
75503% 
75504% 
75505% 
75507% 
75559% 
75561% 
75567% 
75569% 
75570% 
75573% 
75574% 
75599% 
+2

Donc pour être clair, les chiffres de la liste que vous publiez doivent tout le match, et rien d'autre doivent correspondre? – CAustin

Répondre

3

Il n'y a aucune raison de finesse cela; il suffit d'utiliser une ancienne alternance simple:

\b(71901|71902|...etc)\b 

Essayer « minimiser » l'expression régulière ne sert à rien, mais obscurcit les fermetures éclair, ce qui rend la lecture et le maintien de la regex impossible.

Voir KISS principle

+0

Vous pouvez penser que c'est un bon conseil, mais ce n'est pas le cas. Vous proposez un premier niveau uniquement. Il a environ 42 entrées. Il vérifie tous les 42 avant qu'il échoue. Si un trie à plusieurs niveaux est utilisé, il échoue après 1 vérification. – sln

0

Vous continuez ici.

Vous pouvez utiliser un petit outil agréable de le faire pour vous si Strings to Regex

7(?:1(?:7(?:24|3[01]|4[79]|5[089]|6[258])|8(?:3[49]|40|54)|9(?:0[1239]|1[034]|37|49|5[16]|6[48]))|2087|55(?:0[13457]|59|6[179]|7[034]|99))%

https://regex101.com/r/EePsaG/1

mis en forme:

7 
(?: 
     1 
     (?: 
      7 
      (?: 
       24 
      | 3 [01] 
      | 4 [79] 
      | 5 [089] 
      | 6 [258] 
      ) 
     | 8 
      (?: 3 [49] | 40 | 54) 
     | 9 
      (?: 
       0 [1239] 
      | 1 [034] 
      | 37 
      | 49 
      | 5 [16] 
      | 6 [48] 
      ) 
    ) 
    | 2087 
    | 55 
     (?: 
      0 [13457] 
     | 59 
     | 6 [179] 
     | 7 [034] 
     | 99 
    ) 
) 
%