【问题标题】:Karate XML assertion : Iterate to match a pattern inside an attribute空手道 XML 断言:迭代以匹配属性内的模式
【发布时间】:2021-08-15 13:39:00
【问题描述】:

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


    【解决方案1】:

    您应该考虑其他方法:

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

    【讨论】:

    • 我完全同意@Peter。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 2021-06-17
    • 2020-11-04
    • 1970-01-01
    相关资源
    最近更新 更多