2010-09-30 6 views
0

У меня есть регулярное выражение, которое проходит через теги html и захватывает значения. В настоящее время у меня есть это, чтобы захватить все значения в теге.Регулярное выражение для исключения строки?

<title\b[^>]*>(.*\s?)</title> 

Он отлично работает. Так что, если у меня есть куча страниц, которые имеют названия:

<title>Index</title> 

<title>Artwork</title> 

<title>Theory</title> 

Возвращаемые значения: Index, Произведение, Теория

Как я могу сделать это регулярное выражение игнорировать все теги со значением Теория внутри них?

Заранее спасибо

+2

См http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contains-tags/1732454 # 1732454 – BrunoLM

+0

Любая конкретная причина, по которой вы хотите сделать это только с регулярным выражением? Это действительно не очень хорошо подходит для синтаксического разбора HTML. – zigdon

+0

Да, есть особая причина. Я просто сказал html, чтобы он был простым, но это действительно для программы, которая захватывает XML-данные и вставляет их в базу данных. – Ricky

ответ

0

Основной вид вокруг would probably handle that.

<title\b[^>]*>(((?!Juju - Search Results).)*)(.*\s?)</title> 
+0

Это хорошая небольшая программа, которую у вас есть, но на моем конце нет кнопки выполнения для тестирования. – Ricky

+0

Я тестировал вышеуказанный код, и он все еще не работал. Скажем, например, вместо теории стоимости - я хочу игнорировать значение «Juju - Результаты поиска». Регулярное выражение может даже исключать значения, которые начинаются с первых 4 слов, даже не затрагивая пробелы. – Ricky

+0

Не уверен, что я понимаю, к чему вы клоните. Я обновил пример с помощью regEx, который должен обрабатывать упомянутый вами случай. – Snekse

0

Если файл input_file.txt содержит:

<title>Index</title> 

<title>Artwork</title> 

<title>Theory</title> 

Затем, следующая команда удалит строки, содержащие Theory от input_file.txt и поместить результат в output_file.txt.

sed '/Theory/d' input_file.txt > output_file.txt 

Если вы работаете в Vim: (. * Теория)! Это удалит строки, содержащие г/\ v^@/d

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