2013-12-08 12 views

回答

1

\是一個轉義字符。它改變了以下字符的含義,雖然在空格的情況下它不會改變任何東西。如果你做'\ t'你得到一個製表符,如果你使用'\ n',你會得到一個換行符。 \只會對特定字符起作用,而其他所有字符只會匹配它們。如果你想包括「\」在你的輸出,你需要使用\\

這裏的反斜槓字符的一些其他用途的正則表達式:

http://www.gnu.org/software/emacs/manual/html_node/emacs/Regexp-Backslash.html

1

在該R正則表達式有一些元字符(如. \ | () [ {^$ * + ?),它們有特殊含義,例如.匹配單個字符,+表示前面的項目將匹配一個或多個項目。

> grep("a+", c("abc.", "def", "cba a", "a.a", "a+"), value=TRUE) 
[1] "abc." "cba a" "a.a" "a+" 

在這個例子中a+意味着我們希望它有一個或內更a匹配字符串

如果你想這裏面出現一個實際+字符(如最後一個字符串匹配字符串在上述情況下a+),你應該使用反斜槓\在你的正則表達式來使解析器解釋不同的看法(否則會使用它的特殊含義進行解釋),因此上述例子將改變爲:

> grep("a\\+", c("abc.", "def", "cba a", "a.a", "a+"), value=TRUE) 
[1] "a+" 

請注意,我們+之前有\\因爲\本身是一個元字符,所以你需要一個\+,和一個\\本身

當你之前非元字符用反斜槓,其含義是依賴於實現,如\a被解釋爲BEL,\tTAB\rCR。在你的情況下,你在\前面有一個空格,它仍然被解釋爲空格。

雖然\+沒有被定義爲一個轉義序列,因爲我下面測試:

> str <- "hello,\+world" 
Error: '\+' is an unrecognized escape in character string starting ""hello,\+" 

所以,如果你想在你使用+文字字符串使用+直接,如果你想在正則表達式中使用它,您使用+直接作爲重複數量或使用轉義序列\\+

我發現了兩個鏈接Regular Expressions as used in RRegular Expression with The R Language有用的,你可以找到更多的細節有