2011-06-07 63 views
1

我使用正則表達式中的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

我想你想括號()沒有字符類[],即

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

根據該文件中的正則表達式的解釋(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) 
> 

你確定你是直接從工作空間複製?