用下划线替换两个大写字母之间的空格

时间:2017-06-05 14:46:49

标签: r regex expression stringr

我的字符串中的字符看起来像这样:

" 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:])")

1 个答案:

答案 0 :(得分:2)

我们可以使用正则表达式外观来匹配大写字母((?<=[A-Z]))后面的空格,后跟大写字母或数字((?=[A-Z0-9])),将其替换为_

gsub("(?<=[A-Z]) (?=[A-Z0-9])", "_", v1, perl = TRUE)
#[1] " A_E_222;CMPSC_201 orCMPSC_202"