在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