使用正则表达式识别英国邮政编码中的模式
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”。即使有一种方法可以用一个表达式来做到这一点,阅读和维护它也将是一场噩梦。
【讨论】:
以上是关于使用正则表达式识别英国邮政编码中的模式的主要内容,如果未能解决你的问题,请参考以下文章