我从包含真实测地线表达式的网络中检索数据,我的意思是带有 Unicode 符号的度、分和秒:U+00B0, U+2032 and U+2033
,命名为 Degree,Prime 和 Double Prime。例子:
my $Lat = "48° 25′ 43″ N";
我的目标是首先将这样的表达式转换为度数,然后再转换为弧度,以便在我正在编写的 Perl 模块中使用,该模块实现了 Vincenty 逆公式来计算椭圆体大圆距离。我所有的代码目标都满足了伪测地线,例如“48:25:43 N”,但当然,这是手动输入的测试数据,而不是真实世界的数据。我正在努力制作一个可以拆分这些真实数据的正则表达式,就像我现在做伪数据一样,如下所示:
my ($deg, $min, $sec, $dir) = split(/[\s:]+/, $_[0], 4); # this works
我尝试了很多正则表达式,包括
/[°′″\s]+/ and
/[\x{0B00}\x{2032}\x{2033}\s]/+
都以惨淡的结果,例如$deg = "48?", $min = "?", $sec = "25′43″ N" and $dir = undef
。我已将代码封装在大括号{}
内,并包含在该范围内使用 utf8;并使用功能“unicode_strings”;所有这些都带有 nada 结果。
输入数据示例:
my $Lat = "48° 25′ 43″ N";
预期输出:
$deg = 48, $min = 25, $sec = 43 and $dir = "N"