如果在 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。
我想从地址列表中删除逗号,如果 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。