如果在 R 中满足条件,正则表达式将删除字符串中的逗号

Regex to remove commas in string if criteria are met in R

我想从地址列表中删除逗号,如果 1) 逗号跟在任何数字后面或 2) 逗号跟在数字后面只有一个字母。

所以如果我的输入是这样的:

library("data.table")
Input <- data.table(Var = c("43, Badger Drive", "45A, Badger Drive",
                            "45BB, Badger Drive", "Zebra House, 200A Badger Drive", 
                            "F27, 20 Badger Drive", "78, Badger 24 Drive"))

我的输出看起来像这样:

Output <- data.table(Var = c("43 Badger Drive", "45A Badger Drive", 
                            "45BB, Badger Drive"," Zebra House, 200A Badger Drive", 
                            "F27, 20 Badger Drive", "78 Badger 24 Drive"))

这几乎达到了我的第一个标准,但是删除了 F27 后第 5 行的逗号,我也不确定如何修改它才能达到我的第二个标准:

Input[, New_Input := gsub("([[:digit:]]),", "\1", Input$Var)]

您可以使用

gsub("([[:digit:]][[:alpha:]]?),", "\1", Input$Var)

这里,

  • ([[:digit:]][[:alpha:]]?) - 捕获第 1 组:一个数字和一个可选字母
  • , - 逗号

匹配项仅替换为第 1 组内容,因此逗号仅在逗号前面紧跟数字或数字+字母时才被删除。

参见regex demo