我正在尝试替换所有标点符号,而不是单词"除了"。"和" - "在一个字符串中,但我正在努力找到正确的组合来设置正则表达式。
我在R中使用了以下str_replace_all()代码,但现在我想指定忽略"。"和" - "。我已尝试将其设置为包含[^ .-]和([.-])等内容,但我没有得到所需的输出。
str_replace_all("[APPLE/O.ORANGE*PLUM-11]", regex("[\\W+,[:punct:]]", perl=T)," ")
" APPLE O ORANGE PLUM 11 " #current output
" APPLE O.ORANGE PLUM-11 " #desired output
任何建议都将不胜感激。谢谢!
答案 0 :(得分:8)
使用^可能更容易,这意味着它匹配括号内未引用的所有内容。通过在框中包含所有字母,数字,。和 - ,您不会替换它们。
library(stringr)
str_replace_all("[APPLE/O.ORANGE*PLUM-11]", "[^a-zA-Z0-9.-]"," ")
答案 1 :(得分:0)
请注意,str_replace_all
不允许使用PCRE模式,stringr library是ICU正则表达式。
使用以下模式可以使用基础R gsub
完成您需要做的事情:
> x<-"[APPLE/O.ORANGE*PLUM-11]"
> gsub("[^\\w.-]", " ", x, perl=TRUE)
[1] " APPLE O.ORANGE PLUM-11 "
请参阅R demo online。另请参阅regex online demo here。
[^\\w.-]
模式匹配除(因为[^...]
是否定字符类)以外的任何字符)字符字母(字母,数字,_
),.
和{{ 1}}。