2015-11-05 74 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