Regex 如何在R中删除字符串中特定长度的单词?

Regex 如何在R中删除字符串中特定长度的单词?,regex,r,string,trim,gsub,Regex,R,String,Trim,Gsub,我想删除字符串中长度小于3的单词。例如,我的输入是 str<- c("hello RP have a nice day") strx试试这个: gsub('\\b\\w{1,2}\\b','',str) [1] "hello have nice day" 编辑 \b是单词边界。如果需要删除额外空间,请将其更改为: gsub('\\b\\w{1,2}\\s','',str) 或 gsub(”(?或使用str\u extract\u all提取长度>=3的所有单词并粘贴 librar

我想删除字符串中长度小于3的单词。例如,我的输入是

str<- c("hello RP have a nice day")
str
x试试这个:

gsub('\\b\\w{1,2}\\b','',str)
[1] "hello  have  nice day"
编辑 \b是单词边界。如果需要删除额外空间,请将其更改为:

gsub('\\b\\w{1,2}\\s','',str)


gsub(”(?或使用
str\u extract\u all
提取长度>=3的所有单词并粘贴

library(stringr)
paste(str_extract_all(str, '\\w{3,}')[[1]], collapse=' ')
#[1] "hello have nice day"

下面是一种使用
rm_nchar_words
函数的方法,该函数来自我与@hwnd(SO regex guru extra ordinaire)合著的qdapRegex包。这里我展示了删除1-2个字母单词,然后删除1-3个字母单词:

str<- c("hello RP have a nice day")

library(qdapTools)

rm_nchar_words(str, "1,2")
## [1] "hello have nice day"

rm_nchar_words(str, "1,3")
## [1] "hello have nice"

最好不要使用str作为变量名。str是R的内置函数。
gsub('.|…','',s)
也许可以对正则表达式的作用做一些解释?我喜欢只使用base R的方法。但这三种解决方案都会犯以下三个“错误”之一:(1)通过减号(如“共同选择”)连接到较长的子字符串时,删除长度为1或2的子字符串;(2)不要删除字符串末尾长度为1或2的子字符串;(3)不删除字符串开头的子字符串。第一个解决方案会犯第一个错误,第二个解决方案会犯第二个错误,第三个解决方案会犯第二个和第三个错误。我怎么能不犯这些错误呢?我在尝试此操作时遇到了一个错误。…
subsoldata$ProductTitle@I_m_LeMarque它是b因为我们正在提取第一个元素
[[1]]
。在这种情况下,只有一个字符串。在您的情况下,您可能需要循环,然后执行
粘贴操作
gsub('(?<=\\s)(\\w{1,2}\\s)','',str,perl=T)
library(stringr)
paste(str_extract_all(str, '\\w{3,}')[[1]], collapse=' ')
#[1] "hello have nice day"
str<- c("hello RP have a nice day")

library(qdapTools)

rm_nchar_words(str, "1,2")
## [1] "hello have nice day"

rm_nchar_words(str, "1,3")
## [1] "hello have nice"
S("@rm_nchar_words", "1,2")
##  "(?<![\\w'])(?:'?\\w'?){1,2}(?![\\w'])"