2011-07-20 12 views
1

Rの正規表現にストアド変数を使用することはできますか?ですか?

たとえば、次の文字列の10進数の引用符を削除したいとします。s = "\"Bob\",\"1\",\"Mary\",\"2\"" - ほとんどの言語でsub("\"(\d)\"","$1",s)のようなことができますが、Rの機能が見つからないようです。

また、副質問として、Rは\dをサポートしていますか? (それは私がそれを試してみるとエラーをスローする)ありがとう

+0

はい、Rは '\ d'をサポートしますが、\をエスケープして' \\ d 'と書く必要があります。 – Andrie

+0

'[:digits:]'を使用して数字を照合することもできます。 –

答えて

6

これは通常、逆参照と呼ばれると考えています。 Rでは、あなたは、私は、一般的にちょうどI以来、とにかく[0-9]を使用して、私はR.で\ dのサポートについてはよく分からないなど

re.examples <- c(
    'What_are_we_doing?', 
    'Woe, that a young fowl should fly the coop', 
    '2011/12/24', 
    'Subject: More information, then less important stuff.' 
) 

sub("([0-9]+)/([0-9]+)/([0-9]+)","Year is \\1 Month is \\2 Day is \\3",re.examples[3]) 
sub("^([A-Za-z ]+): ([A-Za-z ]+), ([A-Za-z ]+).$","\\2",re.examples[4]) 

\\ 1 \\ 2を、使用することができますそれが動作することを知って、私はそれを読むのが簡単だと分かります。

編集:@Andrieと@Richie Cottonはコメントで2つの提案を提供しましたが、ここでは完全性のためにここに含めます。 [:digits:]は機能しますが、私の心には[0-9]より読みやすさはほとんどありません。 \\ dも同様に動作します。

+0

驚くばかり!どうもありがとう – Michael