我想从字符串中除去空白,而2个非空白字符 单词之间的连续空白数目小于某个数目。
例如,
a <- c("I want only <5 white-spaces removed")
我知道我可以使用gsub(' ', '', a)
删除所有空格。但是,仅当总空格小于5时,我才想删除两个非空格字符 words之间的空格。所以我想要以下内容
a_adj <- c("Iwant only <5 white-spacesremoved")
我尝试过此gsub('{,5} ', '', a)
。但它仍会删除所有空白。有人可以帮忙吗?
谢谢
您可以使用
a_adj <- gsub("(?<=\\S)\\s{1,4}(?=\\S)", "", a, perl=TRUE)
请参见regex demo和R demo。
(?<=\S)\s{1,4}(?=\S)
仅在任何非空白字符之间匹配1至4个空白。
详细信息
(?<=\S)
-正向后看,要求在当前位置的左侧紧跟一个非空白字符\s{1,4}
-1至4个空格字符(?=\S)
-正向超前,需要在当前位置的右边紧跟一个非空白字符。使用str_remove_all
library(stringr)
str_remove_all(a, "\\s{1,4}(?! )")