我希望能够识别表单的模式
28°44'30"N., 33°12'36"E.
这是我到目前为止所拥有的:
use utf8;
qr{
(?:
\d{1,3} \s* ° \s*
\d{1,2} \s* ' \s*
\d{1,2} \s* " \s*
[ENSW] \s* \.?
\s* ,? \s*
){2}
}x;
不用说,这不匹配。和扩展字符(即度数符号)有什么关系吗?或者我只是把事情搞砸了?
我也希望得到指示CPAN
,如果您知道可以解决我的问题的东西。我看过正则表达式::常见 and 地理::格式化程序,但这些都没有达到我想要的效果。有任何想法吗?
Update
原来我需要拿出来use utf8
从文件读取坐标时。如果我用坐标手动初始化变量,它会很好地匹配,但是一旦我从文件中读取同一行,它就不会匹配。取出use utf8
解决了这个问题。我想我真的不明白什么utf8
是在做。
This:
use strict;
use warnings;
use utf8;
my $re = qr{
(?:
\d{1,3} \s* ° \s*
\d{1,2} \s* ' \s*
\d{1,2} \s* " \s*
[ENSW] \s* \.?
\s* ,? \s*
){2}
}x;
if (q{28°44'30"N., 33°12'36"E.} =~ $re) {
print "match\n";
} else {
print "no match\n";
}
works:
$ ./coord.pl
match
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)