我在检查格式为A1A1A1的加拿大邮政编码时出错。
常见的错别字是大写O,而不是位置2、4或6的零,应将其替换为零。

我对regex相当陌生,这让我感到困惑。
非常感谢!

最佳答案

你可以做

x <- c("A0A0A0", "AOB0C0", "A0BOC0", "A0B0CO", "OOOOOO")

gsub("([A-Z])O", "\\10", x)
# [1] "A0A0A0" "A0B0C0" "A0B0C0" "A0B0C0" "O0O0O0"


一点解释:


[A-Z]是从AZ的任何字符
括号([A-Z])用于捕获字符,因此在替换中可以将其引用为\\1
([A-Z])O是从AZ的字符,后跟O
\\1是从AZ的捕获字符
\\10是捕获的字符,后跟一个0

10-01 05:01
查看更多