Как найти цитаты в теге? - PullRequest
4 голосов
/ 13 мая 2009

У меня есть такая строка:

This <span class="highlight">is</span> a very "nice" day!

Как должен выглядеть мой шаблон RegEx в VB, чтобы найти кавычки внутри тега? Я хочу заменить это чем-то ...

This <span class=^highlight^>is</span> a very "nice" day!

Что-то вроде <(") [^>] +> не работает: (

Спасибо

Ответы [ 5 ]

11 голосов
/ 13 мая 2009

Это зависит от вашего вкуса регулярных выражений, но для большинства из них это работает:

"(?=[^<]*>)

РЕДАКТИРОВАТЬ: Для всех, кому интересно, как это работает. Это переводится на английский как «Найти цитату, за которой следует> перед следующей <». </p>

2 голосов
/ 13 мая 2009

Регулярные выражения в принципе плохо разбирают HTML (см. . Можете ли вы привести некоторые примеры того, почему трудно анализировать XML и HTML с регулярным выражением? , почему). Что вам нужно, это HTML-парсер. См. Можете ли вы привести пример разбора HTML с вашим любимым парсером? для примеров использования различных парсеров.

Если вы используете VB.net, вы сможете использовать HTMLAgilityPack .

0 голосов
/ 13 мая 2009

Это должно получить ваше первое значение атрибута в теге:

<[^">]+"(?<value>[^"]*)"[^>]*>
0 голосов
/ 13 мая 2009

Если вы хотите заменить ВСЕ кавычки внутри тегов, вы можете использовать следующее регулярное выражение:

(<[^>"]*)(")([^>]*>)

Это изолирует подстроки до и после вашей кавычки. Обратите внимание, что это не пытается сопоставить открывающую и закрывающую кавычки. Он просто соответствует кавычке внутри тега.

0 голосов
/ 13 мая 2009

Попробуйте это: <span class="([^"]+?)?">

...