wen*_*wen 14 regex r character gsub
我有一些像这样的句子.
c = "In Acid-base reaction (page[4]), why does it create water and not H+?"
Run Code Online (Sandbox Code Playgroud)
我想删除除'?&+ - /之外的所有特殊字符
我知道如果我想删除所有特殊字符,我可以简单地使用
gsub("[[:punct:]]", "", c)
"In Acidbase reaction page4 why does it create water and not H"
Run Code Online (Sandbox Code Playgroud)
但是,一些特殊字符如+ - ?也被删除,我打算保留.
我试图创建一个特殊字符串,我可以在这样的代码中使用
gsub("[special_string]", "", c)
Run Code Online (Sandbox Code Playgroud)
我能做的最好的就是想出这个
cat("!\"#$%()*,.:;<=>@[\\]^_`{|}~.")
Run Code Online (Sandbox Code Playgroud)
但是,以下代码不起作用
gsub("[cat("!\"#$%()*,.:;<=>@[\\]^_`{|}~.")]", "", c)
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能删除特殊字符,除了一些我要保留的字符?
谢谢
Bro*_*ieG 21
gsub("[^[:alnum:][:blank:]+?&/\\-]", "", c)
# [1] "In Acid-base reaction page4 why does it create water and not H+?"
Run Code Online (Sandbox Code Playgroud)
我认为你正在使用正则表达式解决方案.我会给你一个凌乱的解决方案和一个包添加解决方案(无耻的自我推销).
可能有更好的正则表达式:
x <- "In Acid-base reaction (page[4]), why does it create water and not H+?"
keeps <- c("+", "-", "?")
## Regex solution
gsub(paste0(".*?($|'|", paste(paste0("\\",
keeps), collapse = "|"), "|[^[:punct:]]).*?"), "\\1", x)
#qdap: addon package solution
library(qdap)
strip(x, keeps, lower = FALSE)
## [1] "In Acid-base reaction page why does it create water and not H+?"
Run Code Online (Sandbox Code Playgroud)
为了使您的方法起作用,您需要在前导“ [”之后立即加上文字“]”
gsub("[][!#$%()*,.:;<=>@^_`|~.{}]", "", c)
[1] "In Acid-base reaction page4 why does it create water and not H+?"
Run Code Online (Sandbox Code Playgroud)
您可以将内部“ [”放置在任何位置。如果您需要排除负号,那么它将排在最后。列出所有这些特殊的预定义字符类之后,请参见?regex页面。