2015-11-05 107 views
1

我有一個我需要grep通過的字符串向量。在R中正則表達式的Grep

我希望grep這個術語是「A-10」,但是我希望它只能提取其中「A-10」是一個獨立詞彙的行(例如「A-10飛機維護」而非「 WQDA-10-ASP「)。

哪個正則表達式允許我將grep「A-10」作爲單獨的單詞,而不是其他單詞或字符串的一部分?

+1

使用''A-10「'而不是''A-10」'(增加的空間)怎麼樣? – David

+0

謝謝,@David,但我發現在R中添加任意空格來語法化詞條可能會變得混亂且難以追蹤(我有超過100個術語來grep超過800萬個觀察值)。 – Austin

+0

@奧斯汀良好的捕捉;對於那個很抱歉。我想'\\ b'不能完成這項工作,所以我會盡快刪除我的答案。我會做什麼在Dunder Chief的答案中顯示。 – Frank

回答

4

如何:

abc <- c('A-10 maintanance', 'WQDA-10-ASP') 
grep('(^|\\s)A-10($|\\s)', abc) 

其中(^|\\s)意味着字符串或空白開始,($|\\s)意味着行或空白的結束

如果你想要一些漂亮的正則表達式也藉此看看stringr包功能。

+0

感謝@DunderChief,這似乎工作 - 感謝您的解釋以及建議檢查stringr – Austin

+0

'(^ | \\ s)A-10($ | \\ s)'排除像-A- 10-,儘管這個正則表達式有點笨拙。謝謝,@DunderChief! – Austin