如何从r中的文本中删除连续的大写字符?

use*_*832 -3 r text-mining

例如,我有一个文本

a <- "This IS A SAMple sentence TMP"
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

"This A ple sentence"
Run Code Online (Sandbox Code Playgroud)

我该怎么做?一些更简单的方法吗?

akr*_*run 6

  library(stringr)
  str_trim(gsub("[A-Z]{2,}","",a))
  [1] "This  A ple sentence"
Run Code Online (Sandbox Code Playgroud)

  • 答案很好。也许对组件的解释会补充它。首先,gsub 在 a 中全局查找任何具有大写字母的字符串——这是字符类 [AZ]——连续两次或更多次——这是量词 {2, }。如果量词是 {2,3},它会连续查找两个或三个;如果 {2} 它将连续查找两个。当 gsub 找到这些匹配项时,它会用空格替换它们,就像“”一样。最后, str_trim 删除末尾开头的空格。 (2认同)