正则表达式解析/拆分 WKT(已知文本)为键值对

本文关键字:文本 键值对 拆分 WKT 正则表达式 | 更新日期: 2023-09-27 18:35:21

我已经为此苦恼了几个小时,但我显然缺乏基本的正则表达式知识来做我想做的事。

我有一个 WKT(众所周知的文本,请参阅 http://en.wikipedia.org/wiki/Well-known_text)字符串,如下所示:

PROJCS["MGI / Austria GK Central",GEOGCS["MGI",DATUM["Militar_Geographische_Institute",SPHEROID["Bessel 1841",6377397.155,299.1528128000009,AUTHORITY["EPSG","7004"]],AUTHORITY["EPSG","6312"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4312"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",13.33333333333333],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",-5000000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","31255"]]

我想将此字符串解析为键/值对。因此,举个例子:

SPHEROID["Bessel 1841",6377397.155,299.1528128000009,AUTHORITY["EPSG","7004"]]会变成:

密钥SPHEROID

"Bessel 1841",6377397.155,299.1528128000009,AUTHORITY["EPSG","7004"]

通过与'[(.*?)']匹配,我得到了所有值(见 http://rubular.com/r/6SxMbRMufJ),但我丢失了键。如何创建一个正则表达式,其中第一组是键,第二组是值?

另外,有没有办法拆分嵌套值(如key[key[value]]]),或者我必须在每个匹配项上使用递归?

正则表达式解析/拆分 WKT(已知文本)为键值对

达到您要求的最小值的正则表达式是 ([^'[]+?)'[(.*)']


但是,由于您正在解析特定格式,因此您应该寻找执行此操作的现有解析器。

例如,您可以查看以下代码 http://www.dupuis.me/node/28

此外,http://gis.stackexchange.com 还有提到其他库的答案:https://gis.stackexchange.com/questions/13078/how-to-unproject-wkt-to-wkt-in-net