空手道 XML 断言:迭代以匹配属性内的模式

Karate XML assertion : Iterate to match a pattern inside an attribute

我有这个正则表达式模式,(\-?\d?)(\.?\d)*\,{1}(\-?\d+\.?\d*) 用于以下数据

<LinearRing>
    <coordinates> 46.8,16.600001 023,16.600035 -46.2000,16.60004 46,164 47.400044,-14.1 47.400043,13.8 47.400043,0 47.400024,-3.9  </coordinates>
    <coordinates> 46.8,16.600032 46,16.600035 -46.2000,16.60004 46,164 47.400044,-14.1 47.400043,13.8 47.400043,0 47.400024,-3.9  </coordinates>       
</LinearRing>

由于space/gap(介于16.600001和023之间),匹配失败,我也尝试添加\s?,但仍然失败,

      # * def xmlData1 = above data
        * match each $xmlData1/LinearRing/coordinates == '#regex ((\-?\d?)(\.?\d)*\,{1}(\-?\d+\.?\d*)\s?)'

是否可以迭代坐标内的每组(2 个值)以匹配空手道中的上述正则表达式?或者我如何调整我的正则表达式以匹配格式?每个值

之间只允许有一个space

你应该考虑其他方法:

* def input = ' 46.8,16.600001 023,16.600035 -46.2000,16.60004 46,164 47.400044,-14.1 47.400043,13.8 47.400043,0 47.400024,-3.9  '
* def temp = input.trim().split(' ')
* match each temp == '#regex .*'

我还要说一下,在我看来,您所做的这些断言似乎是在浪费时间。您真的通过检查这些正则表达式获得了什么吗?如果适用,我建议您与潜在客户和产品负责人合作。

我会做的是写一个 Java class 来解析这些数字并“理解”这些数字——它们是否是有效的坐标等。但这取决于你。