【发布时间】:2012-11-28 18:09:48
【问题描述】:
我有一个正则表达式,我想以各种方式匹配纬度/经度对,例如
123 34 42
-123* 34' 42"
123* 34' 42"
+123* 34' 42"
45* 12' 22"N
45 12' 22"S
90:00:00.0N
我希望能够成对匹配这些
90:00:00.0N 180:00:00.0E 是一个纬度/经度对。
或
45* 12' 22"N 46* 12' 22"E 是一个纬度/经度对(1 度 x 1 度单元格)。
或
123* 34' 42" 124* 34' 42" 是一个纬度/经度对
等
使用下面的正则表达式,当我输入 123 时,它匹配。我想这是真的,因为 123 00 00 是一个有效的坐标。但是,我想使用这个正则表达式来匹配上面相同格式的对
"([-|\\+]?\\d{1,3}[d|D|\u00B0|\\s](\\s*\\d{1,2}['|\u2019|\\s])?"
+ "(\\s*\\d{1,2}[\"|\u201d|\\s])?\\s*([N|n|S|s|E|e|W|w])?\\s?)"
我正在使用 Java。
* 表示学位。
我在正则表达式中做错了什么?
【问题讨论】:
-
你的最后一个例子是 not 纬度/经度对。没有北纬 123 度这样的东西。
-
@John:我知道,这就是问题所在。它不是匹配对。至于是一个有效的坐标,这是另一个问题。
-
@AlexWien:目前不关心小数,也不要太关心数字,我只关心格式。
-
我不确定您的正则表达式有什么问题,但问题是您试图一次性编写整个正则表达式,这使得检测和/或维护错误非常困难。
-
@0A0D: ideone.com/jyaVVm 不确定这是否是一个好方法,但至少,我的头不会在此过程中爆炸。
标签: java regex latitude-longitude