.NET регулярное выражение - PullRequest
1 голос
/ 06 июля 2010

У меня есть исходный код html-страницы с тегами img, такими как

<p>xyz </p>< img ....... 1 . gif >........<p>xyz</p>
           < img ........ 2 . jpg >..............<p>xyz</p>    
           < img ........ 3 . jpg ><p>xyz</p>
           < img ....... 4 . gif >......<span>xyz</span>

Теги Img могут содержать изображения в формате jpg и других форматах и ​​могут быть в любом порядке в исходном тексте веб-страницы. Теперь я хочу использовать .NETрегулярное выражение, которое может дать мне первый тег img с изображением JPG, например

< img ... 2. jpg >

или любой первый тег img без изображения gif.В основном, я хочу удалить смайлики из gif изображений в моем регулярном выражении

Пожалуйста, предложите мне регулярное выражение

Ответы [ 5 ]

2 голосов
/ 06 июля 2010

Не разбирать HTML с помощью RegEx. См. здесь по веским причинам.

HTML не является регулярным языком и поэтому не подходит для анализа с помощью регулярного выражения.

Используйте HTML Agility Pack для разбора HTML. Он предоставляет разобранный HTML аналогично XmlDocument и может быть запрошен с помощью XPath.

0 голосов
/ 06 июля 2010

как насчет jquery?

Легко найти html части dom и изменить их $('img[src~=.gif]').hide();

0 голосов
/ 06 июля 2010

если html является действительным xhtml, вы также можете использовать xpath или xslt.

xpath должен выглядеть так (извините, не проверял):

//img[not fn:ends-with(@src, ".gif")]
0 голосов
/ 06 июля 2010

Использование регулярных выражений для анализа или изменения документов HTML не одобряется.Для одной операции вы можете использовать

<img\s+[^>]*2.jpg[^>]*>(</img>)?

, чтобы идентифицировать теги изображений, содержащие «2.jpg».Если вы хотите сделать это более одного раза, вы можете сделать себе одолжение, используя HTML-анализатор, такой как HTML Agility Pack.Есть гораздо менее хрупкие, когда сталкиваются с реальным HTML-кодом.

0 голосов
/ 06 июля 2010
<.*img[^>]*\.[^>]*jpg[^>]*>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...