rの正規表現で\\s|*
と\\s|[*]
の違いは何ですか?rの正規表現の `\ s | *`と `\ s | [*]`の違いは?
> gsub('\\s|*','','Aug 2013*')
[1] "Aug2013*"
> gsub('\\s|[*]','','Aug 2013*')
[1] "Aug2013"
ここで[ ]
の機能は何ですか?
rの正規表現で\\s|*
と\\s|[*]
の違いは何ですか?rの正規表現の `\ s | *`と `\ s | [*]`の違いは?
> gsub('\\s|*','','Aug 2013*')
[1] "Aug2013*"
> gsub('\\s|[*]','','Aug 2013*')
[1] "Aug2013"
ここで[ ]
の機能は何ですか?
に相当します。このように特殊文字でsub
またはgsub
を使用する場合は、fixed = TRUE
パラメータセットを使用できます。
これは、検索対象のパターンをそのまま表す文字列をそのまま使用し、は、の任意の特殊文字を無視します。
R
ドキュメントのPattern Matching and Replacement
を参照してください。
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
第2の式:\\s|[*]
\s whitespace (\n, \r, \t, \f, and " ")
| OR
[*] any character of: '*'
ここで[]
の使用は、*
をリテラルアスタリスクにエスケープすること以外は何もありません。
最初の正規表現は無効です(*
は "0以上"を意味する特殊文字です)。
第二の正規表現は、最初の式が故に*
は特殊文字で、あなたがそれを使用している方法で、無効である
'\\s|\\*'
'*'は正規表現の特殊文字なので、 '[]'は文字の文字解釈を強制します。 – joran