C# 用于检查多个纬度和经度值的正则表达式模式

C# 用于检查多个纬度和经度值的正则表达式模式,c#,regex,C#,Regex,我有以下正则表达式模式: ^POLYGON\s*\(\(\-?\d+(\.\d+))\s*(\-?\d+(\.\d+))\)$ 我正在尝试匹配字符串模式多边形((77.409707269440513 12.97814798071318,77.37585259873805 13.27361287708299,77.80253462545315 13.185991361443607,77.83326044994843 12.874112460078642,77.60553383834375903

我有以下正则表达式模式:

^POLYGON\s*\(\(\-?\d+(\.\d+))\s*(\-?\d+(\.\d+))\)$
我正在尝试匹配字符串模式多边形((77.409707269440513 12.97814798071318,77.37585259873805 13.27361287708299,77.80253462545315 13.185991361443607,77.83326044994843 12.874112460078642,77.60553383834375903 12.753157552741165,77.47003961302485 12.860758717988348,77.40044069330365 12.98005488377385,77.409707269113 12.97417118))。 但是我上面使用的正则表达式模式只满足值为POLYGON的字符串((130.55809472656256 111.333))


需要有关regex表达式的帮助,才能将上述字符串与多个以逗号分隔的组的lat-long值进行匹配。

您可以选择重复模式的第二部分,并匹配逗号或空格字符,以匹配整个字符串

^POLYGON\s*\(\(\-?\d+(?:\.\d+)?(?:[,\s]\-?\d+(?:\.\d+)?)*\)\)$

如果它们成对出现,用空格字符分隔,后面用逗号分隔,您可以选择重复这些对:

^POLYGON\s*\(\(\-?\d+(?:\.\d+)?\s\-?\d+(?:\.\d+)?(?:,-?\d+(?:\.\d+)?(?:\s\-?\d+\.\d+)?)*\)\)$

试试
^POLYGON\s*\((?>(?)(?:\。\d+))\s*(?\d+(?:\。\d+)))((,(?!\))*)$