【问题标题】:R grep pattern regex with brackets带括号的 R grep 模式正则表达式
【发布时间】:2011-11-03 09:14:26
【问题描述】:

我对 R 中的 grep 有疑问:

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

grep(patterns[1],text)
>integer(0)  ????

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

【问题讨论】:

  • JFI,正则表达式中的括号() 用于提取匹配的子字符串。请参阅 ?gsub,示例部分。

标签: r regex


【解决方案1】:

你需要通过双反斜杠转义:

> patterns= c("AB_\\(1\\)","AB_(2)")
> text= c("AB_(1)","DDD","CC")
> 
> grep(patterns[1],text)
[1] 1

【讨论】:

  • @user170322。还有一点不同的方式。如果模式只是纯文本(看起来很可能),grep 的参数 fixed 可能非常有用(因此,提供 fixed=TRUE 而不是使用双反斜杠转义 ()
  • 如果我从数据库中获取模式怎么办?
【解决方案2】:

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

grep(patterns[1], text, fixed = TRUE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2014-06-29
    • 2021-03-28
    • 1970-01-01
    相关资源
    最近更新 更多