有人可以告诉我正则表达式来转换这种格式:
'LINESTRING ZM ( 574084.51000000 4229857.57000000 0.00000000 0.00000000, 574095.03000000 4229848.23500000 0.00000000 0.00870000)'
对此
'LINESTRING ZM ( 574084.51000000 4229857.57000000, 574095.03000000 4229848.23500000)'
每个逗号之间只应保留前两个数字。这 4 个坐标集可能有任意数量。
我尝试了以下(通过 oracle sql REGEXP_REPLACE 函数),但没有得到想要的结果(上面详述)
select REGEXP_REPLACE(
'LINESTRING ZM ( 574084.51000000 4229857.57000000 0.00000000 0.00000000, 574095.03000000 4229848.23500000 0.00000000 0.00870000)',
'(LINESTRING ZM )((([:digit:]+\.[:digit:]+ ){2})([:digit:]+\.[:digit:]+ ){2}(([:digit:]+\.[:digit:]+ ){2})([:digit:]+\.[:digit:]+ ){2})',
'\1(\2, \5)'
) regex_output from dual;