带支架的R grep模式正则表达式

use*_*322 20 regex grep r

我在R中的grep有问题:

patterns= c("AB_(1)","AB_(2)")
text= c("AB_(1)","DDD","CC")

grep(patterns[1],text)
>integer(0)  ????
Run Code Online (Sandbox Code Playgroud)

grep命令有"()"括号的问题,有没有as.XX(patterns [1])我可以使用?

koh*_*ske 28

你需要通过双反斜杠逃脱:

> patterns= c("AB_\\(1\\)","AB_(2)")
> text= c("AB_(1)","DDD","CC")
> 
> grep(patterns[1],text)
[1] 1
Run Code Online (Sandbox Code Playgroud)

  • @ user170322.还有一点不同的方式.如果模式只是纯文本(似乎很可能),`grep`的参数`fixed`可能非常有用(因此,提供`fixed = TRUE`而不是使用双反斜杠转义`()` (2认同)

G. *_*eck 17

如果正则表达式中没有特殊的模式匹配字符(如问题中显示的示例中的情况),则使用fixed=TRUE:

grep(patterns[1], text, fixed = TRUE)
Run Code Online (Sandbox Code Playgroud)