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

stu*_*f22 2 regex xml xpath grep xsd

给定此表达式匹配包含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>
Run Code Online (Sandbox Code Playgroud)

如何将xs:包含minOccurs的元素行更改为xs:不包含minOccurs的元素行.

预期的输出是这样的:

<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
Run Code Online (Sandbox Code Playgroud)

Kir*_*huk 6

使用XML引擎而不是正则表达式.适当的XPath:

//xs:element[not(@minOccurs)]
Run Code Online (Sandbox Code Playgroud)

正则表达式:

<xs:element(?![^>]+?minOccurs=".*?")[^>]*>
Run Code Online (Sandbox Code Playgroud)