空手道 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 来解析这些数字并“理解”这些数字——它们是否是有效的坐标等。但这取决于你。
我有这个正则表达式模式,(\-?\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 来解析这些数字并“理解”这些数字——它们是否是有效的坐标等。但这取决于你。