我正在尝试从R上的两个不同数据表中加入包含公司名称的两列。在一列中,我有模式_A_&_B_
,其中A和B可以是任何字母。我想摆脱那两个字母,即由_
所以,如果我有John_K_&_E_Scott
,我希望John__&__Scott
,因为我可以删除标点符号。我试过下面的
names[, JOINING_ID := gsub("[A-Za-z]_&_[A-Za-z]\\w", "", JOINING_ID)]
但这会转换John_A_&_ BOYS_
中的John__&_ OYS_
,这不是我想要的。
答案 0 :(得分:0)
使用以下正则表达式模式:
_[[:alpha:]]_&_[[:alpha:]]_
并替换为__&__
。见the regex demo。它不会匹配像John_A_&_BOYS_
这样的字符串,因此不会出现类似你所拥有的问题。
请注意,[[:alpha:]]
匹配任何字母。
R用法:
gsub("_[[:alpha:]]_&_[[:alpha:]]_", "__&__", JOINING_ID)
或者,如果您只希望每个字符串匹配一次,请使用sub
:
sub("_[[:alpha:]]_&_[[:alpha:]]_", "__&__", JOINING_ID)