R:找到并删除所有一到两个字母的单词

Fra*_*art 4 regex r

我试图从文本段落中删除任何一个或两个字母的单词.这是我的第一个念头

gsub(" [a-zA-Z]{1,2} ", " ", "a ab abc B BB BBB")
[1] "a aaa BB BBBB"
Run Code Online (Sandbox Code Playgroud)

我可以看到"a"是如何不被替换的,因为它不带空格,我可以看到"BB"是如何被替换的,因为它所引导的空间已经被"B"抓住了.

Wik*_*żew 8

您可以使用限制量词来使用\b单词边界和[[:alpha:]]括号表达式{1,2},然后修剪前导/尾随空格并将多个空格缩小为1:

tr <- "a ab abc B BB BBB f"
tr <- gsub(" *\\b[[:alpha:]]{1,2}\\b *", " ", tr) # Remove 1-2 letter words
gsub("^ +| +$|( ) +", "\\1", tr) # Remove excessive spacing
Run Code Online (Sandbox Code Playgroud)

结果:

[1] "abc BBB"
Run Code Online (Sandbox Code Playgroud)

请参阅IDEONE演示