2011-07-09 61 views
27

除非我失去了一些東西,這正則表達式似乎非常簡單:逃逸期間在該R正則表達式

grepl("Processor\.[0-9]+\..*Processor\.Time", names(web02)) 

但是,它不喜歡的逃脫時間,\.針對我的意圖是成爲一個真正的點:

Error: '\.' is an unrecognized escape in character string starting "Processor\." 

我對這個正則表達式語法有什麼誤解?

+5

我不知道R,但有你的嘗試'\\。'? –

+1

@mu:雅,修復它。但是,不知道爲什麼我需要雙'''來逃避它 –

+2

你需要一個逃避另一個,以便你得到一個超過字符串修剪器並通過正則表達式引擎。 –

回答

46

我的R-Fu很弱,不存在,但我想我知道發生了什麼。

R處理器的字符串處理部分必須在字符串內部偷看以將\n和相關的轉義序列轉換爲它們的字符等值。 R不知道\.是什麼意思,所以它抱怨。你想讓逃逸的點進入正則表達式引擎,所以你需要通過一個單一的\過去的字符串。做那種事的通常方式是爲了躲避逃生:

grepl("Processor\\.[0-9]+\\..*Processor\\.Time", names(web02)) 

嵌入一種語言(正則表達式)另一種語言(R)內通常是有點亂,尤其是當這兩種語言使用相同的轉義句法。