2014-10-07 3 views
1

Im пытается построить идентификатор Regex для следующих ...Regex идентификатор для ближайших элементов

<w:p> 
    Some Other XML 
     <w:p someatribute="something"> 
     HERE 
     </w:p> 
    Some Other XML 
</w:p> 

Идентификатор должен выбрать только следующую часть ...

 <w:p someatribute="something"> 
     HERE 
     </w:p> 

И оставить все еще в ладони.

Моя текущая попытка ... <w:p(.*?)Test(.*?):p>

выбирает все из приведенного выше образца. Может ли regex помочь мне здесь, чтобы определить самое близкое совпадение и любой текст между ними?

Большое спасибо!

TR

+0

Почему бы вам сделать это с помощью регулярных выражений, в отличие от стандартных методов DOM обхода? –

+2

Ну, если вы знаете, что между ними есть только текст, то '] *?> ([^ <>] *?) Тест ([^ <>] *?) <\/w:p>' может сделать - но [в общем, ** НЕТ **] (http://stackoverflow.com/a/1732454/1048572). – Bergi

+0

Хорошо, спасибо, может быть, больно открыть еще один вопрос о том, как пересмотреть то, что я делаю тогда. Приветствую вас за помощь. –

ответ

0
(<w:p[^>]+>(?:(?!<\/wp>).)+?<\/w:p>) 

Попробуйте this.Set флаги s .Увидь демо.

http://regex101.com/r/hQ1rP0/40

+0

Работал с большой благодарностью, по крайней мере, он сделал то, что я просил. Не разрешил мою проблему, но помог мне сузить ее благодаря кучу. Оказывается, вы не можете удалить абзац из использования XML SDK, если он оставил родителя типа TableCell пустым. Я думаю, TableCells нужно по крайней мере один абзац в них. Вернулись к использованию стандартного OpenXML SDK, делающего сравнение по типам родителей. –

+0

@TomRebbettes приветствуется :) – vks

Смежные вопросы