C# 经纬度对的正则表达式
我在谷歌地图上画了一条线,然后创建了一个字符串,如: (-25.368819800291383130.55809472656256)(-25.50771638630266131.05797265625006)(-24.89637614190406131.49193261718756)(-24.582068950590272130.3109023437506) 第一个值是纬度,第二个值是经度。我为这个字符串分配了一个隐藏字段值,这样我就可以在服务器上访问它 如何检索纬度和经度数字 我在努力C# 经纬度对的正则表达式,c#,regex,C#,Regex,我在谷歌地图上画了一条线,然后创建了一个字符串,如: (-25.368819800291383130.55809472656256)(-25.50771638630266131.05797265625006)(-24.89637614190406131.49193261718756)(-24.582068950590272130.3109023437506) 第一个值是纬度,第二个值是经度。我为这个字符串分配了一个隐藏字段值,这样我就可以在服务器上访问它 如何检索纬度和经度数字 我在努力 Ma
Match match = Regex.Match(points, @"(^(0|(-(((0|[1-9]\d*)\.\d+)|([1-9]\d*))))$,^(0|(-(((0|[1-9]\d*)\.\d+)|([1-9]\d*))))$)*", RegexOptions.IgnoreCase);
使用以下命令:^(\-?\d+(\.\d+))\s*(\-?\d+(\.\d+))$
(取自)。正则表达式的一个问题是使用了两次^
和$
。这些表示字符串的开始和结束,因此在您的情况下,您的正则表达式将永远无法工作
上面的正则表达式应该提取数字,并通过使用组使其可用。尝试以下方法:
Match match = Regex.Match(points, @"(-?\d+\.\d+)+", RegexOptions.IgnoreCase);
对于您的输入,它将产生8个结果,每个结果=经度或纬度
Match match = Regex.Match(points, @"((-?\d+\.\d+)+,?){2}", RegexOptions.IgnoreCase);
将产生4个结果,每个结果是一对形式的经纬度
\((?<lat>[-\d.]+),(?<long>[-\d.]+)\)
\((?[-\d.]+),(?[-\d.]+)\)
我喜欢在这里使用命名组。要仅获取纬度,请使用
Regex regexObj = new Regex(@"\((?<lat>[-\d.]+),(?<long>[-\d.]+)\)");
Match matchResult = regexObj.Match(subjectString);
while (matchResult.Success) {
Console.WriteLine(matchResult.Groups["lat"].Value));
matchResult = matchResult.NextMatch();
Regex regexObj=新的正则表达式(@“\(?[-\d.]+),(?[-\d.]+)\);
Match matchResult=regexObj.Match(subjectString);
while(matchResult.Success){
Console.WriteLine(matchResult.Groups[“lat”].Value));
matchResult=matchResult.NextMatch();
可能与如何检索纬度和经度数字相同?-您不需要正则表达式来执行此操作。我认为仅使用String.Split
@Ramhound会更快。一些字符串操作听起来也可行。但是在拆分之后,您仍然应该进行更多的解析。