撇号和正则表达式;清理 R 中的文本

Apostrophes and regular expressions; Cleaning text in R

我正在清理大量文本。到目前为止我的过程是:

我的问题在倒数第二步。最初,我的代码是:

gsub(pattern = "\b\S\b", replacement = "", perl = TRUE)

但这破坏了剩下的任何收缩(我故意留下的)。然后我试了

gsub(pattern = "\b(\S^'\s)\b", replacement = "", perl = TRUE)

但这留下了很多单个字符。

然后我意识到我需要保留三个单字母单词:“A”、“I”和“O”(无论大小写)。

有什么建议吗?

您可以使用

gsub("(?i)\b(?<!')(?![AOI])\p{L}\b", "", x, perl=TRUE)

详情:

  • (?i) -
  • 匹配不区分大小写
  • \b - 单词边界
  • (?<!') - 不允许 ' 紧靠左边
  • (?![AOI]) - 下一个字符不能是 AIO
  • \p{L} - 任何 Unicod 字母
  • \b - 单词边界