@ReLock

Как исключить блок текста из поиска в регулярных выражениях?

Есть блок текста:
<root>
	<id>0</id>
	<strings>
		<string>
			<id/>
		</string>
		<string>
			<id>0-1</id>
		</string>
	</strings>
	<rows>
		<row>
			<id>1-1</id>
		</row>
		<row>
			<id>1-2</id>
		</row>
	</rows>
</root>


Блоки strings и rows представляют собой таблицы. Все, что выше - реквизиты. Для простоты понимания здесь указан один реквизит id. В таблицах количество колонок может быть разным, но для простоты оставлена только одна колонка id.
Хочу организовать поиск определенных колонок (в данном примере, ищу колонку id).
Варианты поиска могут быть разными, например:
  1. 1. Ищу колонку только среди реквизитов. Табличные части должны быть исключены из поиска
  2. 2. Ищу колонку только в табличной части strings

Никак не соображу, как организовать такой поиск.
Допустим, по первому варианту я определил группу так:
(<strings>.*<\/strings>|<rows>.*<\/rows>)
Я получил текст обеих таблиц. Теперь мне надо организовать поиск по всему тексту и найти
<id>.*<\/id>|<id\/>, но исключая ранее определенную группу.
Смотрел в сторону "Опережающие и ретроспективные проверки", но нифига не понял.
Подскажите, если это решаемо?
Заранее спасибо!
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы