【问题标题】:regular expression with space带空格的正则表达式
【发布时间】:2011-09-09 18:10:15
【问题描述】:

我在 R 中使用正则表达式,代码如下:

> temp <- c("Herniorrhaphy, left inguinal", "Herniorrhaphy, right inguinal")
> grep("Herniorrhaphy, [left|right] inguinal",temp)
integer(0)
> grep("Herniorrhaphy, [left inguinal|right inguinal]",temp)
[1] 1 2

我想知道为什么这两个正则表达式会给出不同的结果,谢谢。

【问题讨论】:

    标签: regex r


    【解决方案1】:

    根据文档中的正则表达式解释(http://stat.ethz.ch/R-manual/R-devel/library/base/html/regex.html):

    请注意,交替不起作用 在字符类中,其中 |已 它的字面意思。

    这解释了为什么第一个替代方案不返回任何结果,因为 '[' 和 ']' 字符表示字符类。正确的语法应该是:

    grep("Herniorrhaphy, (left|right) inguinal",temp)
    

    在我的 R 上,第二种选择也返回空集:

    > temp <- c("Herniorrhaphy, left inguinal", "Herniorrhaphy, right inguinal")
    > grep("Herniorrhaphy, [left inguinal|right inguinal] inguinal",temp)
    integer(0)
    > 
    

    您确定是直接从工作区复制吗?

    【讨论】:

      【解决方案2】:

      我想你想要括号()不是字符类[],即

      "Herniorrhaphy, (left|right) inguinal"
      "Herniorrhaphy, (left inguinal|right inguinal)"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-07
        • 2016-11-29
        • 2012-02-02
        • 2012-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多