1

我想提取英国邮政编码的外码。所有背景都在这里:英国邮政编码正则表达式(综合)

但这不是验证,所以应该这样做:

  • 长度为 5 的邮政编码的前 2 个字符
  • 长度为 6 的邮政编码的前 3 个字符
  • 长度为 7 的邮政编码的前 4 个字符

所有邮政编码都转换为大写字母且没有空格。

我不知道如何指定动态范围。或任何工作。

伪代码^[A-Z0-9]{length(postcode) - 3}

补充:我正在使用 R。

4

1 回答 1

2

您使用的语言或环境(或者更确切地说是正则表达式风格)会有所帮助(在任何正则表达式问题中总是如此),但在大多数情况下应该这样做:

^([A-Z0-9]{2,})[A-Z0-9]{3}$

因此,我们匹配并捕获group 中的 2 个或更多字符1,然后恰好需要另外 3 个字符,直到字符串结尾。您如何访问捕获取决于您的环境。

如果您的正则表达式支持前瞻,那么您也无需使用捕获即可:

^[A-Z0-9]{2,}(?=[A-Z0-9]{3}$)

这确保了匹配的结尾后面跟着三个字符和字符串的结尾,但不包括这部分在匹配中。

于 2013-06-08T16:03:00.973 回答