2011-02-10 8 views
0

Я хочу извлечь все тексты между указанными тегами открытия и закрытия, включая теги. Для например:Что такое Regex для следующего?

Input : I am <NAME>Kai</NAME> 
Text Extracted: <NAME>Kai</NAME> 

Это извлечение текста на основе тега.

Что такое Regex для вышеуказанного?

+2

возможный дубликат [тегов OpenEx, открытых в тегах RegEx, за исключением XHTML автономных тегов] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) –

ответ

3

Если тег идет речь, не могут быть вложенными (и при условии, нечувствительность к регистру):

Regex regexObj = new Regex("<NAME>(?:(?!</NAME>).)*</NAME>", RegexOptions.Singleline | RegexOptions.IgnoreCase); 

Советуйте, что это быстрый и грязный раствор, который может работать нормально для ваших потребностей, но может также взорваться на вашем лице (например, если теги возникают в комментариях, если в тегах есть пробелы, если в тегах есть какие-либо атрибуты и т. д.). Если какой-либо из этих проблем может быть проблемой для вас, пожалуйста, отредактируйте свой вопрос с точными спецификациями, которые необходимо выполнить регулярному выражению.

1

Вот регулярное выражение, которое принимает любое имя тега: <(\w+)>.*?</\1>

\1 вернулся, ссылающийся на группу (\w+) и гарантирует, что закрывающий тег должен иметь такое же имя, как и открывающий тег.

Если вы хотите найти специальный тег NAME, то вы могли бы использовать это регулярное выражение: <NAME>.*?</NAME>

+0

Это будет соответствовать нескольким тегам, если они находятся на одной строке. –

+0

Спасибо. Теперь я добавил '?', Чтобы сделать '*' не-жадным. – splash

0

http://www.regular-expressions.info/reference.html Вы могли бы найти что-нибудь полезное, они выделяют вещи специально для тегов и т.д. Объедините примеры, чтобы удовлетворить ваши требования.

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