2017-05-17 16 views
1

Rの文字列を分割しようとしています。正規表現をRのstrsplit()で使用しています。例えば正規表現エスケープ構文R(strsplit)

> Hello, my friend! 

は私が非単語の文字の上に私は\W+(例えばstrsplit(test, "\W+"))行うのPythonでやるだけの方法でそれを分割することができ考え出したがのため、これが壊れ

> [1] "Hello" "my"  "friend" 

になるべきエスケープが認識されない;私はstrsplit(test, "\\W+")をする必要があります。 perl = TRUEまたはfixed = TRUEと設定した場合も同じです。後者は、docsによると私にという文字通りの正規表現を与えます。

は、私は、スクリプトでこれを含めるつもりだったと

  • ダブルエスケープ\\とのビジネスは何を思っていましたか? Rでどのようにエスケープするのですか?ドキュメントに基づいて、実際に一致する方法はとなります。それは実際には[がPythonで行うこととは違っているようです - それは正しい構文ですか?もしそうなら、それはどこから来ていますか、どこでそれを読むことができますか?

  • fixed = TRUEによって実現できるリテラル正規表現とは何ですか? \\Wを使用した場合、\\ Wと一致しません。

  • 標準のR正規表現がPerlスタイルでない場合はどうなりますか?違いは何ですか?

ありがとう!

+1

最初にすべての文字と数字を削除してから分割します。 –

+3

文字列を作成する際に使用する構文と、文字列で終わる実際の内容との違いはあります。その違いのアイデアを得るには 'cat(" \\ W ")'または 'cat(" \\\\ W ")'を試してください。あなたは、文字列の実際の内容を取得して、必要な正規表現に一致させる必要があります。 – Marius

+0

@マリアスありがとう、よかった!しかし、 'cat'は' print'とは異なる出力をします。 「猫」は私が行くものを私に与えるだろうか?私はテキスト文字列として_ \\ W_を含むデータフレームを設定することでこれを試みました。私が 'print'を実行すると、それは私に\\\\ W_を与えます.''cat(" \\ W ")'は_ \ W_を返します...私はおそらくこれを思っています... – patrick

答えて

0

私は有用であり得るいくつかの興味深い情報が見つかりました:

機能splits strings on white space

RegEx in R

はちょうど私が評判ポイントを持っていけないこれらの原因の目の前でのhttpコロンスラッシュスラッシュを置くことを2つ以上のリンクを投稿する

finzi.psych.upenn.edu/R/library/operators/html/patternDivision.html

finzi.psych.upenn.edu/R/library/R.utils/html/splitByPattern.html