R中不同符号的匹配坐标

Matching coordinates with different sign in R

我正在通过下载其 html 代码来抓取网络地图,我想通过匹配正则表达式来提取某些点的坐标。我使用以下代码实现了提取大部分坐标:

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

此代码提取纬度为负但有时为负的情况。我需要指定符号“[”来提取点但没有地图边界。也就是说,我需要获得类似

的东西
[10.6302565,-74.9131161]

但我需要包含

这样的结果
[-10.6302565,-74.9131161]

如果有你的帮助,我将不胜感激。谢谢。

附加

我也包括doc。在这种情况下,我有正纬度:

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

在这种情况下,我有负纬度:

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

您可以使用

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

参见regex demo。请注意,在 \[ 之后添加的 -?(匹配 1 或 0 个减号)和 , 之后的 [[:punct:]] 替换为 -?。我还删除了不必要的转义符号。

> 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]"