带有特定邮政编码的正则表达式

时间:2017-10-12 21:55:07

标签: regex informix

在以下情况下我需要帮助: pr_zip匹配'someregexhere'

问题是我返回72701并且我不想退回此zip。我只想退回这些拉链。

我想过做这样的事情

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

但这似乎很笨拙,必须有更好的方法。

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

这不起作用,因为它比我需要的拉码更多。

有人有想法吗?

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 个答案:

答案 0 :(得分:3)

没有理由对此进行细致处理;只使用一个普通的旧的交替:

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

尝试"最小化"正则表达式只能实现拉链的混淆,这使得正则表达式的阅读和维护几乎不可能。

请参阅KISS principle

答案 1 :(得分:0)

你走了。

你可以使用一个漂亮的小工具为你做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

格式化:

 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 
      )
 )
 %