在R中,grep通常匹配多个字符串对一个正则表达式的向量。R grep:匹配多个模式的一个字符串
问:是否有可能将单个字符串与多个正则表达式匹配? (没有循环遍历每一个正则表达式模式)?
一些背景资料:
我有7000+的关键词作为指标的几个类别。我无法更改该关键字字典。这本字典有以下结构(关键字在第1栏的数字代表这些关键字属于类别):
ab 10 37 41
abbrach* 38
abbreche 39
abbrich* 39
abend* 37
abendessen* 60 63
aber 20 23 45
abermals 37
串联有这么多的关键字“|”不是一个可行的方法(我不知道哪个关键字产生了命中)。 此外,只是反转“模式”和“字符串”不起作用,因为模式具有截断,这不会反过来工作。
[related question,其他编程语言]
我就像丹的建议一样,但是对于大数据集,您可能会遇到一些重大的速度问题。如果您想在字典中查找某些内容并返回对应的值,我会建议采用不同的方法:使用strsplit将句子分解为单个单词的向量,然后应用哈希表进行快速查找。我在想,你可能想把关键字和类别指标分成两个单独的字典列。我会在那里提供帮助,但只有在你更清楚地将最终结果作为想要之后。 – 2012-03-02 18:33:04
同意重构字典数据并使用散列表进行查找(取决于期望的结果),但匹配应该相对较快,具体取决于字符串的数量,即使使用大量关键字也是如此。我会为我的答案添加一个快速基准。 – danpelota 2012-03-02 19:33:03
如果你真的有很多单词 (通常是人类语言中的所有单词, 所有被google索引的单词等),你可以使用 [前缀树](http:// en。 wikipedia.org/wiki/Trie) (它有时也被称为“trie”)。 但我不知道任何实现的R. – 2012-03-02 23:25:46