Отрицание слова в строке с помощью регулярного выражения - PullRequest
2 голосов
/ 29 августа 2011

Учитывая это выражение, которое соответствует строкам, которые содержат 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>

как мнеизмените его на соответствие xs: элемент строк, которые содержат minOccurs на xs: элемент строк, которые не содержат minOccurs .

Ожидаемый результат будет следующим:

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

1 Ответ

6 голосов
/ 29 августа 2011

Использовать движок XML вместо регулярных выражений.Соответствующий XPath:

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

Регулярное выражение:

<xs:element(?![^>]+?minOccurs=".*?")[^>]*>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...