2017-01-24 16 views
1

htmlコードをダウンロードしてWebマップをスクラップしています。正規表現に一致させていくつかの点の座標を抽出したいと思います。緯度が負であるが、それは時々負で異なるサインの座標を一致させるR

library(stringr)  
unique(str_extract_all(doc,"\\[[[:digit:]]+[.][[:digit:]]+[,][[:punct:]][[:digit:]]+[.][[:digit:]]+\\]")[[1]]) 

このコードエキス場合:私は、抽出物を以下のコードと座標の大部分を達成しました。そして、私は点を抽出するために記号「[」を必要としますが、地図の境界はありません。それは私が

[10.6302565,-74.9131161] 

ような何かを得る必要がありますが、私は、私はあなたの助けを借りて感謝するでしょう

[-10.6302565,-74.9131161] 

ような結果が含まれる必要があります。ありがとう。

Aditional

私もdocが含まれています。 Iこの場合、私はポジティブ緯度持っている:

i<-"https://www.google.com/maps/d/embed?mid=1vq9uMa8L0PxnrhG-m3z3Jt-HDh4" 
doc<-readLines(url(i)) 
doc<-doc[7] 
doc<-iconv(doc,"latin1","ASCII","") 
+0

「doc」の行数を表示してください – akrun

+0

オプションのマイナスに一致する必要がありますか? \\ d + \ d] [https://regex101.com/r/DhR7SS/1] \\ d + [。 ? –

+0

Wiktorはい、 ' - ?'は私のために働きます。ありがとうございました。 – fcochaux

答えて

0

あなたはregex demoを参照してください

"\\[-?\\d+[.]\\d+,-?\\d+[.]\\d+\\]" 

を使用することがあります。この場合

i<-"https://www.google.com/maps/d/embed?mid=1YhVS6Z--LIc5k9rstJ24tYcb-Nc" 
doc<-readLines(url(i)) 
doc<-doc[7] 
doc<-iconv(doc,"latin1","ASCII","") 

を、私は否定的ゆとりを持っています。 \\[の後に追加された-?(1または0の記号に一致)は、,の後に-?に置き換えられました。私はまた不要なエスケープ記号を削除しました。

> library(stringr)  
> i<-"https://www.google.com/maps/d/embed?mid=1YhVS6Z--LIc5k9rstJ24tYcb-Nc" 
> doc<-readLines(url(i)) 
> doc<-doc[7] 
> unique(str_extract_all(doc,"\\[-?\\d+[.]\\d+,-?\\d+[.]\\d+\\]")[[1]]) 
[1] "[10.6302565,-74.9131161]" "[10.8632551,-74.7769001]" 
[3] "[10.9827508,-74.783735]" "[10.9419975,-74.7826532]" 
+0

それはあなたのために働いてうれしい。私の答えがあなたにとって有益であると判明した場合には、upv​​otingを検討してください([Stack Overflowについてのアップルのしくみ?](http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow)参照) 。 –

関連する問題