regex 删除R中美国电话号码前面的前导“1”

x33g5p2x  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(129)

我有一个美国电话号码的向量,其中一些电话号码的开头有一个前导的“1”,如果号码是11位数,这意味着第一位是我想去掉的“1”(至少在我的数据集中是这样)。

phone <- c("1234567890", "1234567890", "5556456890", "5444567890", "19729772976")

我使用

gsub("[- .)(+]|[a-zA-Z]*:?","", phone)

如果字符串长度为11个字符,我不确定如何编写代码来删除第一个数字。或者换句话说,如果字符串具有一定长度,则删除矢量中的第一个字符。

inb24sb2

inb24sb21#

我们可以使用base R中的sub来匹配开始时的1^),并捕获该字符串的10位数(\\d{10})作为一个组((...))直到结束($)的字符串、并在替换中指定捕获的组的反向引用(\\1)。这将防止丢失10位字符串中的任何1

sub("^1(\\d{10})$", "\\1", phone)
  • 输出
[1] "1234567890" "1234567890" "5556456890" "5444567890" "9729772976"

相关问题