我在检查格式为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]
是从A
到Z
的任何字符括号
([A-Z])
用于捕获字符,因此在替换中可以将其引用为\\1
([A-Z])O
是从A
到Z
的字符,后跟O
\\1
是从A
到Z
的捕获字符\\10
是捕获的字符,后跟一个0