我的字符串中的字符看起来像这样:
" A E 222;CMPSC 201 orCMPSC 202"
我想做的是make就是这样:
" A_E_222;CMPSC_201 orCMPSC_202"
到目前为止,我尝试了以下代码,但它只在前面或后面添加下划线,所以我不确定还有什么可以尝试。
str_replace_all(x, "([A-Z][:blank:][A-Z])", "\\1_")
str_replace_all(x, "([A-Z][:blank:][:digit:])", "([A-Z][:digit:])")
答案 0 :(得分:2)
我们可以使用正则表达式外观来匹配大写字母((?<=[A-Z])
)后面的空格,后跟大写字母或数字((?=[A-Z0-9])
),将其替换为_
gsub("(?<=[A-Z]) (?=[A-Z0-9])", "_", v1, perl = TRUE)
#[1] " A_E_222;CMPSC_201 orCMPSC_202"