当前位置:  开发笔记 > 编程语言 > 正文

如何修改此正则表达式以提取英国邮政编码的左手和右手部分?

如何解决《如何修改此正则表达式以提取英国邮政编码的左手和右手部分?》经验,为你挑选了1个好方法。

我有一个正则表达式,用于验证英国邮政编码,但现在我想提取代码的组成部分,我感到困惑.对于那些不知道英国邮政编码的例子的人是'WC1 1AA','WC11 1AA'和'M1 1AA'.

下面的正则表达式(格式化道歉)处理\s{0,}左侧和右侧部分之间缺少空格(这是位)并且仍然有效(这很好).

(?:(?:A[BL]|B[ABDHLNRST]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[CHNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTWY]?|T[ADFNQRSW]|UB|W[ACDFNRSV]?|YO|ZE)\d(?:\d|[A-Z])?\s{0,}\d[A-Z]{2})

我希望能够现在提取左侧和右侧,我知道括号用于此,但是那里已经有括号,并且正则表达式规范不易阅读.所以我想这些括号需要更换,任何人都可以帮我修改括号吗?

我可以看到其他人会发现这个使用正则表达式,所以请随意使用它来验证英国邮政地址.



1> chaos..:

实际上,括号用于提取,而不是括号.(?:表达式中的结构是如何防止括号执行提取.您可能需要:

(?:((?:A[BL]|B[ABDHLNRST]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[CHNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTWY]?|T[ADFNQRSW]|UB|W[ACDFNRSV]?|YO|ZE)\d(?:\d|[A-Z])?)\s{0,}(\d[A-Z]{2}))

顺便说一句,我也会做出这样的改变:

(?:((?:A[BL]|B[ABDHLNRST]?|C[ABFHMORTVW]|D[ADEGHLNTY]|E[CHNX]?|F[KY]|G[LUY]?|H[ADGPRSUX]|I[GMPV]|JE|K[ATWY]|L[ADELNSU]?|M[EKL]?|N[EGNPRW]?|O[LX]|P[AEHLOR]|R[GHM]|S[AEGKLMNOPRSTWY]?|T[ADFNQRSW]|UB|W[ACDFNRSV]?|YO|ZE)\d(?:\d|[A-Z])?)\s*(\d[A-Z]{2}))

因为\ s {0,}是写\*的愚蠢方式.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有