我有以下句子:
**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**
我想只提取那些被定义相关的单词:I, WANT, ONLY, THESE, WORDS, NEXT, STEP
。应从句子中删除所有其他字符(数字,字母,特殊)。
在这种情况下,产生的句子将是:
I WANT ONLY THESE.
我有数千行这样的行,每行都有自己的有用词之间的字符集。有没有一种有效的方法来摆脱R?
答案 0 :(得分:9)
string <- "**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**"
regmatches(string, gregexpr("I|WANT|ONLY|THESE|WORDS|NEXT|STEP",
string))
[[1]]
[1] "I" "WANT" "ONLY" "THESE"
编辑:如果您想转换回句子,请说我将匹配存储在名为matches
的对象中:
sentencify <- function(sentence){
paste0(paste(sentence, collapse=" "), ".")
}
lapply(matched, sentencify)
[[1]]
[1] "I WANT ONLY THESE."
答案 1 :(得分:2)
这是一种方法,假设您有一个要检查的列表:
> mystring2 <- "**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**"
> mystring2
[1] "**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**"
> temp <- strsplit(mystring2, "[^a-zA-Z]")[[1]]
> myWords <- c("I", "WANT", "ONLY", "THESE", "WORDS", "NEXT", "STEP")
> temp[temp %in% myWords]
[1] "I" "WANT" "ONLY" "THESE"
答案 2 :(得分:2)
如果您没有相关字词列表,请hunspell
自动执行此操作:)
> system(paste('echo "', gsub('\\W', ' ', '**I**%%AABB%&&**WANT**%%AO%**ONLY**%RA%$**THESE**'), '" | hunspell -G -d en_US'))
I
WANT
ONLY
RA
THESE