正则表达式 - 验证多行内容

时间:2018-06-12 21:41:23

标签: regex pcre

我正在尝试验证xml结构,我想检查在邮政编码DataItem之后找到ns22:statement true标记。

<ns21:DataItem name="country" default="false" />
<ns21:DataItem name="postcode" default="false">
    <ns22:statement disabled>true</ns22:statement>
</ns21:DataItem>

我试过这个

(?m)\b.*:DataItem name="postcode" (?s)\b.*>$\n.*\bstatement disabled>true\b

但是当将邮政编码更改为国家/地区(不应该返回任何内容)时,它会捕获所有标签country,postcode和statement true。

我还创建了这个https://regexr.com/3quso

关于如何只获得邮编+语句的任何建议都是真的吗?

1 个答案:

答案 0 :(得分:0)

XPath 确实看起来确实是工作的最佳工具,因为您正在尝试验证XML结构和内容。因此,忽略名称空间,您可以在soapUI XPath Match断言中使用以下XPath:

<ns22:statement disabled>true</ns22:statement>

enter image description here

此外,在disabled中,public class A { }; public class DtoA { }; var source = ServiceClass.Get<A>(); var dto = Mapper.Map<A, ADto>(source); 是否属于元素名称或属性的一部分?就目前而言,它使XML无效,所以我忽略了它。

有充分理由不使用正则表达式来解析XML / HTML,请参阅Why it's not possible to use regex to parse HTML/XML: a formal explanation in layman's terms