Условно лишить HTML-узел - Regexp / gsub - PullRequest
0 голосов
/ 13 сентября 2010

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

например

"<h2>Subject</h2><p>Subject is the who, what, where, why and when.</p>".gsub(/<\/?[^>]*>/, '')

приводит к

Subject Subject is the who, what, where, why and when.

, однако мне требуется

Subject is the who, what, where, why and when.

Я используюRails плагин Loofah для очистки пользовательского ввода, и это прекрасно работает;на самом деле я могу определить скруббер, чтобы сделать это, однако кажется, что регулярного выражения будет достаточно для этой простой операции.

Заранее благодарим за любые советы.

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Используйте несколько регулярных выражений:

"<h2>Subject</h2><p>Subject is the who, what, where, why and when.</p>".
    gsub(/<h\d>[^>]*>/,'').
    gsub(/<img[^>]*>/,'').
    gsub(/<\/?[^>]*>/, '')

Однако следует отметить, что вы достигли пределов сложности того, что regexp может обрабатывать при обработке html. Если вам нужно сделать что-то еще более сложное (например, удаление на основе имени класса и т. Д.), Тогда вы действительно должны использовать html-парсер.

0 голосов
/ 13 сентября 2010

Попробуйте:

myline = line.gsub!(/(<[^>]*>)|\n|\t/s) {" "}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...