如何正则表达式修复不完整的多边形

时间:2019-05-06 00:01:09

标签: regex polygon

  renderItem = ({ item }) => {
    return (

      <TouchableWithoutFeedback onPress={() => this.onPressItem(item)}>
          <ListItem>
              <Text>{item.PRA_Departement==null ? "Code Postal: " + item.PRA_CP:item.PRA_Departement}</Text>
          </ListItem>
      </TouchableWithoutFeedback>

    )
  }

onPressItem(item) {
  () => this.props.navigation.push('DisplayPraticien',{departement: item.PRA_Departement})
}

上面的示例不会绘制多边形,因为开始和结束坐标并不总是匹配。如何以编程方式解决此问题。

并不是所有的多边形都是这个长度。多边形可以具有更多或更少的坐标。

我想获得起始组($ 1)并将其添加到结束(如果不匹配)。 我的正则表达式示例在这里,但我不知道如何获得第二组。 (即最后一个坐标)

https://regex101.com/r/mFWVle/1

以下是预期的最终结果,正则表达式并替换为;)

[[106.00,-50.00],[109.00,-34.00],[101.00,-29.00],[105.00,-26.00],
    [116.00,-30.00],[114.00,-50.00] ]

1 个答案:

答案 0 :(得分:1)

这是有效多边形的正则表达式,即,其起始和结束坐标相同的正则表达式:

^\[(\[-?\d+(?:\.\d+)?,-?\d+(?:\.\d+)?\])(?:,\[-?\d+(?:\.\d+)?,-?\d+(?:\.\d+)?\])+,$1\]$

Demo

此模式仅匹配并捕获第一个坐标,然后断言该相同的坐标作为多边形定义中的最终坐标出现。

我在这里假设多边形定义中没有空格。如果可能存在任意空格,我们可以更新正则表达式以解决该问题,但老实说,只剥离所有空格然后按原样使用上述模式可能更干净。

编辑:

如果相反,您想匹配一个多边形并替换为添加到末尾,并且在坐标之间也可能存在空格,请在此模式上查找:

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

并替换为:

$1$2,$1

Demo