\\s|*
和\\s|[*]
在r?中的正則表達式有什麼區別?r中正則表達式中`\ s | *`和`\ s | [*]`的區別?
> gsub('\\s|*','','Aug 2013*')
[1] "Aug2013*"
> gsub('\\s|[*]','','Aug 2013*')
[1] "Aug2013"
[ ]
這裏有什麼功能?
\\s|*
和\\s|[*]
在r?中的正則表達式有什麼區別?r中正則表達式中`\ s | *`和`\ s | [*]`的區別?
> gsub('\\s|*','','Aug 2013*')
[1] "Aug2013*"
> gsub('\\s|[*]','','Aug 2013*')
[1] "Aug2013"
[ ]
這裏有什麼功能?
第一個表達式是在你正在使用它的方式無效,因此*
是一個特殊字符。如果您想用這種方式使用sub
或gsub
以及特殊字符,則可以使用fixed = TRUE
參數集。
這需要表示正在搜索的模式的字符串,忽略了中的任何特殊字符。
請參閱Pattern Matching and Replacement
中的R
文檔。
x <- 'Aug 2013****'
gsub('*', '', x, fixed=TRUE)
#[1] "Aug 2013"
你的第二個表達式只使用一個字符類[]
爲*
避免逃逸,一樣..
x <- 'Aug 2013*'
gsub('\\s|\\*', '', x)
#[1] "Aug2013"
至於你的第一個表達式的解釋:\\s|*
\s whitespace (\n, \r, \t, \f, and " ")
| OR
而第二個表達式:\\s|[*]
\s whitespace (\n, \r, \t, \f, and " ")
| OR
[*] any character of: '*'
這裏使用[]
沒什麼別的,只是爲了將*
轉義爲文字星號。
第一個正則表達式無效(*
是特殊字符,意思是「零個或多個」)。
第二正則表達式是等效於
'\\s|\\*'
'*'是正則表達式中的一個特殊字符,所以'[]'強制字符的字面解釋。 – joran