使用正则表达式否定一行中的单词

时间:2011-08-29 17:38:45

标签: xml regex xpath xsd grep

鉴于此表达式匹配包含 minOccurs

的行

<xs:element[^>]+?\sminOccurs\s*=[^>]+>

和本文:

<xs:element name="shipto">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="address" type="xs:string"/>
      <xs:element name="city" minOccurs="1" type="xs:string"/>
      <xs:element name="country" minOccurs="1" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

如何将包含minOccurs xs:element 行更改为不包含的 xs:element 行包含minOccurs

预期的输出将是:

<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>

1 个答案:

答案 0 :(得分:6)

使用XML引擎代替正则表达式。适当的XPath:

//xs:element[not(@minOccurs)]

正则表达式:

<xs:element(?![^>]+?minOccurs=".*?")[^>]*>
相关问题