2017-05-23 6 views
1

文字列:string<- "The qu!ck, brown fox jumps over the遅延文字d*g!"を使用し、すべての句読点をエスケープすることを検討してください。したがって:すべての句読点文字をエスケープするR

escaped_string<-"The qu\\!ck\\, brown fox jumps over the \\`lazy\\` d\\*g" 

私が失敗し試してみました:

>gsub(pattern = "[[:punct:]]",replacement="\\1",string) 
[1] "The quck brown fox jumps over the lazy dg 

思考?アイデア?

答えて

3

あなたはキャプチャグループを使用して([[:punct:]])online R demo

エスケープ括弧のペアはあなたが交換用のパターンから\1後方参照でアクセスすることが可能キャプチャグループを作成し、参照してください

string <- "The qu!ck, brown fox jumps over the `lazy` d*g!" 
gsub(pattern = "([[:punct:]])",replacement="\\\\\\1",string) 
[1] "The qu\\!ck\\, brown fox jumps over the \\`lazy\\` d\\*g\\!" 

を使用する必要があります。リテラルバックスラッシュで置き換えるには、リテラルバックスラッシュをエスケープする必要があります(したがって、"\\\\"はバックスラッシュを置き換えることを意味します)。逆参照は"\\1"(リテラルバックスラッシュも必要です)で定義する必要があるため、置換パターンは"\\\\\\1"と定義する必要があります。

+2

うわー!私は想像しませんでした。素晴らしい説明。 Dziekuje! – amonk

+0

別紙では、正規表現の場合の出現回数をどのように推測することができますか?私は2つだけ(お互いに隣り合っている)と句読点を多く入れたいとします。 – amonk

+0

代理人では、私は*同じ数*の出現で置き換えることを意味します。したがって、** ",," " - >" \\、\\ "" ** AND ** "!!!" - > "\\!\\!\\!" ** – amonk

関連する問題