使用正则表达式识别英国邮政编码中的模式

Posted

技术标签:

【中文标题】使用正则表达式识别英国邮政编码中的模式【英文标题】:Use Regex to identify patterns in UK Postcodes 【发布时间】:2012-01-23 22:51:13 【问题描述】:

对于任何英国邮政编码,我想用大写 A 替换所有字母,用 9 替换所有数字。

例如 CH5 1EF 将变为 AA9 9AA EC1N 4DH 会变成 AA9A 9AA

这是否可以在单个 RegEx.Replace 中实现,还是我必须有两个单独的 RegEx.Replace 语句?

【问题讨论】:

你必须使用正则表达式吗?或者任何可以解决您的问题的方法都可以吗? 【参考方案1】:

你还没说你用的是什么语言,我就给个正则表达式吧。

两个操作:

    匹配正则表达式:[A-Z] 并替换为:A 匹配正则表达式:\d 并替换为:9

在java中,它看起来像:

String postcode = "CH5 1EF";
String result = postcode.replaceAll("[A-Z]", "A").replaceAll("\\d", "9");

【讨论】:

【参考方案2】:

为此,您需要两个替换:首先将所有 [A-Za-z] 替换为“A”,然后将所有 [0-9] 替换为“9”。即使有一种方法可以用一个表达式来做到这一点,阅读和维护它也将是一场噩梦。

【讨论】:

以上是关于使用正则表达式识别英国邮政编码中的模式的主要内容,如果未能解决你的问题,请参考以下文章

用于识别英国邮政编码的 R 正则表达式

有效的英国邮政编码正则表达式模式?

带有空格的英国邮政编码的Java正则表达式[重复]

英国邮政编码的正则表达式

正则表达式匹配英国邮政编码的前半部分

使用正则表达式验证英国邮政编码