You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写匹配WKT Polygon格式的正则表达式?

WKT Polygon格式匹配正则方案

基础版本(适配示例所示的无孔洞简单Polygon)

直接匹配POLYGON前缀、双括号包裹、整数/小数坐标的标准格式,正则如下:
^POLYGON \(\((\s*-?\d+(?:\.\d+)?\s+-?\d+(?:\.\d+)?\s*,)*\s*-?\d+(?:\.\d+)?\s+-?\d+(?:\.\d+)?\s*\)\)$

各部分逻辑说明

  • ^POLYGON :匹配开头固定标识,需要兼容大小写的话可开启正则的不区分大小写模式,或改为^[Pp][Oo][Ll][Yy][Gg][Oo][Nn]
  • \(\(:匹配双左括号,括号为正则特殊字符需转义
  • (\s*-?\d+(?:\.\d+)?\s+-?\d+(?:\.\d+)?\s*,)*:匹配多组末尾带逗号的坐标对,支持坐标前后带空格、负坐标、整数/小数格式的坐标值
  • \s*-?\d+(?:\.\d+)?\s+-?\d+(?:\.\d+)?\s*:匹配最后一组无末尾逗号的坐标对
  • \)\)$:匹配双右括号和字符串结尾,避免前后带多余无效字符

扩展适配说明

  • 需支持带内环的Polygon格式(如POLYGON ((0 0,0 1,1 1,1 0,0 0),(0.2 0.2,0.2 0.8,0.8 0.8,0.8 0.2,0.2 0.2)))时,可调整正则适配多组括号的结构
  • 需支持科学计数法格式的坐标时,将正则中的\d+(?:\.\d+)?替换为[+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?即可
  • 正则仅做格式校验,若需校验Polygon首尾坐标闭合、无自交等几何合法性,建议匹配格式后调用专业空间几何库(如shapely、JTS、GDAL)完成校验

提示:如果仅需提取文本中的WKT Polygon片段而非全字符串匹配,去掉正则首尾的^和$即可。

内容的提问来源于stack exchange,提问作者getsuha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:54:02