正则表达式与空间

时间:2011-06-07 03:16:35

标签: regex r

我在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

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

2 个答案:

答案 0 :(得分:3)

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

  

请注意,更改不起作用   里面的字符类,其中|具有   它的字面含义。

这就解释了为什么第一种选择不会返回任何结果,因为'['和']'字符表示一个字符类。正确的sytax应该是:

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)
> 

您确定要直接从工作区进行复制吗?

答案 1 :(得分:2)

我认为您需要括号( )而不是字符类[ ],即

"Herniorrhaphy, (left|right) inguinal"
"Herniorrhaphy, (left inguinal|right inguinal)"
相关问题