gsub在R中有例外

时间:2016-08-21 06:19:43

标签: regex r

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

再生示例:

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

在gsub之后有异常

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

感谢您提出的所有建议

2 个答案:

答案 0 :(得分:3)

这是一个棘手的问题。我认为我们可以通过使用\b词边界断言来匹配整个单词,同时在匹配之前包含一个否定前瞻断言(拒绝这些词)(同样,你希望将黑名单删除(或等同于白名单以便保存)的整个单词)。这似乎有效:

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

答案 1 :(得分:0)

使用带有[A-Z]的gsub函数将删除所有大写字母A到Z字母,以便删除总字数。*用于删除总字符数

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

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

#data

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