C# 经纬度对的正则表达式

C# 经纬度对的正则表达式,c#,regex,C#,Regex,我在谷歌地图上画了一条线,然后创建了一个字符串,如: (-25.368819800291383130.55809472656256)(-25.50771638630266131.05797265625006)(-24.89637614190406131.49193261718756)(-24.582068950590272130.3109023437506) 第一个值是纬度,第二个值是经度。我为这个字符串分配了一个隐藏字段值,这样我就可以在服务器上访问它 如何检索纬度和经度数字 我在努力 Ma

我在谷歌地图上画了一条线,然后创建了一个字符串,如:

(-25.368819800291383130.55809472656256)(-25.50771638630266131.05797265625006)(-24.89637614190406131.49193261718756)(-24.582068950590272130.3109023437506)

第一个值是纬度,第二个值是经度。我为这个字符串分配了一个隐藏字段值,这样我就可以在服务器上访问它

如何检索纬度和经度数字

我在努力

 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会更快。一些字符串操作听起来也可行。但是在拆分之后,您仍然应该进行更多的解析。