首页 > 解决方案 > 空手道 XML 断言:迭代以匹配属性内的模式

问题描述

我有这个正则表达式模式,(\-?\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>

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

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

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

标签: karate

解决方案


您应该考虑其他方法:

* 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 类,它可以解析和“理解”这些数字——它们是否是有效的坐标等。但取决于你。


推荐阅读