2016-04-01 18 views
0

数字の大きな違い:文字列からプラス(+)、マイナス( - )、ピリオド(。)文字およびすべての数字[0-9]を抽出するR

tester1 <- "{\"fullgame\":\"-303\"}" 

tester2 <- "{\"fullgame\":\"+7.5\"}" 

私は(+)を抽出プラスしたいと、マイナスでしょう( - )、およびピリオド文字、私の文字列からすべての数字[0-9]と一緒に(。)。私はまた、これらの要素のそれぞれの現在の順序を文字列に現れるように保持したいと思います。

は、私は結果の文字列になりたい:私は関数のようgsubstrsplit、およびregexは、このアプリケーションのために理想的であることを知っている

formatted1 = "-303" 

formatted2 = "+7.5" 

が、私の人生のために、私は把握することはできませんPerlの構文=(。

任意の助けをいただければ幸いです!皆さんありがとう!

+0

1つの新しい文字列にそれらを抽出しますか? – DavidO

+0

['[+ - ] [.0-9] +'](https://regex101.com/r/aQ6sW9/1)。それはあなたに合うかもしれません。 –

+0

どのperl構文が必要ですか? –

答えて

4

文字列はjsonとよく似ています。詳細は、wiki pageを参照してください。 regexで解析するべきではありません。代わりに特定のjsonパーサーに依存してください。 Rには多くのものがあります。希望の数量を抽出するのは次のように簡単です:

require(jsonlite) #other libraries: rjson, RJSONIO 
fromJSON(tester1) 
#$fullgame 
#[1] "+7.5" 
+0

ありがとう、ニコラ!私はRとプログラミング全般にいくぶん新しかったので、これが 'json'かもしれないことに気付かなかった。私はこの問題についてあなたの助けに感謝します。 – IRNotSmart

+0

喜んで助けました。あなたがそれが役に立つとわかったら、答えを受け入れる/上書きすることを検討してください。 – nicola

-1

あなたが見ている文字の種類と一致していない何かを行うことができますgsub以下のためのINGの:

gsub('[^+-.0-9]', '', tester1) 
# [1] "-303" 
gsub('[^+-.0-9]', '', tester2) 
# [1] "+7.5" 

[^ ... ]こと^が、それは彼らのため以外のものと一致するように指示する文字...のセットを定義します。 gsubは、これらの文字を何も置き換えずに、あなたに必要なものを残します。

1

私は「Perlの」知りませんが、この正規表現パターンは、あなたの数字を引き出す:

3つのキャプチャのセクションがある pattern離れ速報
> gsub("([^-+]+)([+-]{0,1}[0-9.]+)(.+)", "\\2", c(tester1,tester2)) 
[1] "-303" "+7.5" 

:この1つはある

([^-+]+) : uses the negation operator in a character class to match any sequence that is 
      not a plus or minus sign 
([+-]{0,1}[0-9.]+) : the second capture class allows (but does not require) a single 
      +/- sign, followed by any number of digits or decimal point/period 
(.+) : is the third capture class ... anything else that is trailing 

を任意の単一小数点とそれに続く数字を追加することで、数字と小数点の形式をより具体的に表現できます。

gsub("([^-+]+)([+-]{0,1}[0-9]+[.]{0,1}[0-9]*)(.+)", "\\2", c(tester1,tester2)) 

私は、符号付き10進数の抽出をカバーする以前の投稿があることは確かです。

+0

お返事ありがとうございました!私はgsubのための同様のシーケンスを持っている多くの投稿を見てきましたが、それらはすべてプラス(+)、マイナス( - )およびピリオド(。)記号を含んでいませんでした。私はあなたの助けに感謝します! – IRNotSmart

関連する問題