2009-12-17 7 views
0

Извините, это может быть простой вопрос, но я не мог понять. Мне нужно отфильтровать все строки <a href...> и </a> из html-текста. Не знаете, какое регулярное выражение я должен использовать? Я пробовал следующий поиск без везения:VIM Relace все <a ...> and</a>?

/<\shref^(>)> 

, что я имею в виду здесь, чтобы искать любую строку, начинающуюся с «< HREF» и любой строкой, не содержащей «>» и, наконец, «>». Мой поисковый код не работает. Что является правильным?

ответ

1

Если я понимаю, что вы ищете, это должно быть <\shref[^>]*>.

+0

* это нормально, но \ + лучше. –

0

Я думаю, что я получил это:

/<a\shref[^>]+> 

где [] есть множество и^не является.

1

Другим способом было бы использовать не жадный соответствия:

/<a\shref.\{-}> 
+0

Я смущен вашей моделью. Вы можете объяснить "\{-}"? "\ {" выглядит как escape или match '{', затем '-'. '}' не соответствует левому. –

+0

'\ {-}' (или '\ {- \}' имеет особое значение в vim: оно похоже на '*', но оно не жадное. Оно соответствует только наименьшему количеству данных, чтобы совпадение всего шаблона. vim, напечатайте ': h pattern', а затем ищите' {-} 'для получения дополнительной информации. –

+0

Очень классная! Очень приятная альтернатива поиску. Мне это нравится. В случае с несколькими линиями« »будет соответствовать <поперечным линиям Я нашел \ _. Для сопоставления любого символа, включая новую строку. –

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