如何在 R 中使用 gsub 替换 _A_&_B_
How to replace _A_&_B_ using gsub in R
我正在尝试连接包含来自 R 上两个不同数据表的公司名称的两列。在一列中,我有模式 _A_&_B_
,其中 A 和 B 可以是任何字母。我想去掉那两个字母,即长度为 1 的字母被 _
包围
所以如果我有 John_K_&_E_Scott
我想有 John__&__Scott
因为我可以删除标点符号。我试过下面的
names[, JOINING_ID := gsub("[A-Za-z]_&_[A-Za-z]\w", "", JOINING_ID)]
但这将 John_A_&_ BOYS_
转换为 John__&_ OYS_
,这不是我想要的。
使用以下正则表达式模式:
_[[:alpha:]]_&_[[:alpha:]]_
并替换为 __&__
。参见 the regex demo。它不会匹配 John_A_&_BOYS_
之类的字符串,因此不会出现您遇到的问题。
请注意 [[:alpha:]]
匹配任何字母。
R 用法:
gsub("_[[:alpha:]]_&_[[:alpha:]]_", "__&__", JOINING_ID)
或者,如果您只希望每个字符串匹配 1 个,请使用 sub
:
sub("_[[:alpha:]]_&_[[:alpha:]]_", "__&__", JOINING_ID)
我正在尝试连接包含来自 R 上两个不同数据表的公司名称的两列。在一列中,我有模式 _A_&_B_
,其中 A 和 B 可以是任何字母。我想去掉那两个字母,即长度为 1 的字母被 _
所以如果我有 John_K_&_E_Scott
我想有 John__&__Scott
因为我可以删除标点符号。我试过下面的
names[, JOINING_ID := gsub("[A-Za-z]_&_[A-Za-z]\w", "", JOINING_ID)]
但这将 John_A_&_ BOYS_
转换为 John__&_ OYS_
,这不是我想要的。
使用以下正则表达式模式:
_[[:alpha:]]_&_[[:alpha:]]_
并替换为 __&__
。参见 the regex demo。它不会匹配 John_A_&_BOYS_
之类的字符串,因此不会出现您遇到的问题。
请注意 [[:alpha:]]
匹配任何字母。
R 用法:
gsub("_[[:alpha:]]_&_[[:alpha:]]_", "__&__", JOINING_ID)
或者,如果您只希望每个字符串匹配 1 个,请使用 sub
:
sub("_[[:alpha:]]_&_[[:alpha:]]_", "__&__", JOINING_ID)