2017-08-09 25 views
3

から離れた文字列からすべてのドットを削除します。、私はこのような文字列のリストを持って最後

mystr <- c("16.142.8",   
     "52.135.1",   
     "40.114.4",   
     "83.068.8",   
     "83.456.3",   
     "55.181.5",   
     "76.870.2",   
     "96.910.2",   
     "17.171.9",   
     "49.617.4",   
     "38.176.1",   
     "50.717.7",   
     "19.919.6") 

私は二つあるしつつ、第1ドット.は、ちょうど千単位の区切りであることを知っています10進演算子。

文字列を数字に変換したいので、最初の数字は16142.8、次の数字は52135.1などになります。

私はそれが正規表現で成し遂げられると思われますが、どうすればよいか分かりません。何か案は?

答えて

3

あなたはgsubでPCRE正規表現ベースの先読みが必要になります。

gsub("\\.(?=[^.]*\\.)", "", mystr, perl=TRUE) 

online R demo

詳細

  • \\.を参照してください - ドット
  • (?=[^.]*\\.) - それが続くウィットですh 0以上、.[^.]*と一致)以外の文字、その後リテラル.(?=...)は、現在の場所のすぐ右に表示するパターンが必要ですが、一致値には追加されず、正規表現インデックスは1つの同じ場所にとどまる、つまり進められない正の先読みです。
+2

代わりに、私は否定先読み作品を推測:( "[。]?!(\\ D + $)"、 ""、mystr、perlの= TRUE) 'GSUB' – Frank

+1

@Frank:はい、後に続く1桁以上の数字と文字列の最後にマッチします。 –

1

単純な「サブ」は、最初の一致するパターンを置き換えるだけで同じ結果を達成することができます。たとえば、

sub("\\.", "", mystr) 
関連する問題