Итак, у меня есть XML-файл со следующим упрощенным содержимым XML-файла:
<CollectionItems>
<CollectionItem>
<Element1>Value1</Element1>
<Element2>
<SubElement1>SubValue1</SubElement1>
<SubElement2>SubValue2</SubElement2>
<SubElement3>SubValue3</SubElement3>
</Element2>
<Element3>Value3</Element3>
</CollectionItem>
<CollectionItem>
<Element1>Value1</Element1>
<Element2>
<SubElement1>SubValue1</SubElement1>
<SubElement2 />
<SubElement3>SubValue3</SubElement3>
</Element2>
<Element3>Value3</Element3>
</CollectionItem>
<CollectionItem>
<Element1>Value1</Element1>
<Element2>
<SubElement1>SubValue1</SubElement1>
<SubElement2>SubValue2</SubElement2>
<SubElement3>SubValue3</SubElement3>
</Element2>
<Element3>Value3</Element3>
</CollectionItem>
</CollectionItems>
Я пытаюсь написать регулярное выражение в .Net, которое соответствует любому CollectionItem, где SubElement2 пуст (средний CollectionItem в этом примере).
Пока у меня есть следующее регулярное выражение (режим SingleLine включен):
<CollectionItem>.+?<SubElement2 />.+?</CollectionItem>
Проблема заключается в том, что он соответствует открытию первого CollectionItem до закрытия второго CollectionItem. Я понимаю, почему это происходит, но я не знаю, как изменить регулярное выражение, чтобы оно соответствовало только центру CollectionItem.
Редактировать: Почему регулярное выражение в отличие от чего-то другого:
- Я пытался изменить файл в текстовом редакторе для простоты.
- После того, как я не смог понять, как это сделать в регулярных выражениях, я захотел узнать, можно ли это сделать (и как) ради обучения.
Спасибо!