このような文章があります。
c = "In Acid-base reaction (page[4]), why does it create water and not H+?"
'?+-/を除くすべての特殊文字を削除したい
すべての特殊文字を削除したい場合は、単に使用できることを知っています
gsub("[[:punct:]]", "", c)
"In Acidbase reaction page4 why does it create water and not H"
ただし、+-?などの一部の特殊文字削除されますが、これは保持するつもりです。
私はこのようないくつかのコードで使用できる特殊文字の文字列を作成しようとしました
gsub("[special_string]", "", c)
できることはこれを考え出すことです
cat("!\"#$%()*,.:;<=>@[\\]^_`{|}~.")
ただし、次のコードは機能しません
gsub("[cat("!\"#$%()*,.:;<=>@[\\]^_`{|}~.")]", "", c)
保持したい少数の文字を除き、特殊文字を削除するにはどうすればよいですか?
ありがとう
gsub("[^[:alnum:][:blank:]+?&/\\-]", "", c)
# [1] "In Acid-base reaction page4 why does it create water and not H+?"
メソッドを機能させるには、先頭の「[」の直後にリテラル「]」を配置する必要があります
gsub("[][!#$%()*,.:;<=>@^_`|~.{}]", "", c)
[1] "In Acid-base reaction page4 why does it create water and not H+?"
内側の「[」をどこにでも置くことができます。マイナスを除外する必要がある場合は、最後にする必要があります。これらの特別な事前定義文字クラスがすべてリストされた後、?regexページを参照してください。
私はあなたが正規表現ソリューションを求めていると思います。面倒な解決策とパッケージアドオンソリューションを提供します(恥知らずな自己宣伝)。
おそらくより良い正規表現があります:
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+?"