2016-08-21 52 views
1

我正在从希伯来语文本中删除英文字符,但希望保留我想要的英语单词列表,例如words2keep <- c("ok", "hello", "yes*")。 所以我当前的正则表达式是text <- gsub("[A-Z,a-z]", "", text),但问题是如何添加异常,因此它不会删除所有英文单词。gsub在R中有例外

reproducibe例如:

text = "ok אני מסכים איתך Yossi Cohen" 

有例外GSUB后

text = "ok אני מסכים איתך" 

感谢您的所有建议

+0

这个姿势看起来喜欢它可能有你的答案http://stackoverflow.com/questions/2404010/match-everything-except-for-specified-strings –

回答

3

这是一个棘手的一个。我认为我们可以通过使用\b字边界断言来匹配整个单词,同时在匹配之前包含一个否定性前瞻断言(拒绝单词全文)想要删除黑名单(或等价地保存白名单)。这似乎是工作:用[AZ]所有大写字母A到Z的字母

gsub(perl=T,paste0('(?!\\b',paste(collapse='\\b|\\b',words2keep),'\\b)\\b[A-Za-z]+\\b'),'',text); 
[1] "ok אני מסכים איתך " 
0

使用GSUB功能将被移除,总词删除使用*总字符去除

gsub("[A-Z].*","",text) 

[1] "ok אני מסכים איתך " 

#data 

text = "ok אני מסכים איתך Yossi Cohen" 
+1

这只是偶然的工作,并没有任何关系的问题 –