2014-02-21 4 views
1

Мне нужно удалить некоторые теги со всего сайта html. В последнее время я обнаружил вариант регулярного выражения в Notepad ++Notepad ++ Regex для удаления стилей

Но .. Даже после нескольких часов в Гуглинг я, похоже, не прав. Что мне нужно?

Пример:

<p class=MsoNormal style='margin-left:19.85pt;text-indent:-19.85pt'><spanlang=NL style='font-size:11.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang=NL style='font-size:9.0pt;font-family:"Arial","sans-serif"'>zware uitvoering met doorzichtige vulruimte;</span></p> 

Мне нужно удалить все о стилизации, классов и идентификаторов. Поэтому мне нужно иметь только чистые теги без чего-либо еще.

Любой, кто может мне помочь?

Сердечные приветы

EDIT Проверьте весь файл с помощью Pastebin: http://pastebin.com/0tNwGUWP

+1

Не следует использовать регулярное выражение для разбора HTML: http://stackoverflow.com/a/1732454/2812842 –

+0

'Исправление:' Не следует использовать регулярное выражение проанализировать HTML, когда вовлечены теги, вложенные внутри себя. –

+2

У вас есть '

ответ

0

Если образец Предоставленный представляет то, что вам нужно обработать, затем, следующий быстрый и грязный раствор будет работать:

Find what: [a-z]+='[^']*' 
Replace with: 

Find what: [a-z]+=[a-zA-Z]* 
Replace with: 

вы должны запустить первый первый подобрать style='...' атрибуты и вам нужно запустить второй рядом с пикап как class='...' и lang='...'.

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

0

Советуйтесь следующим образом.

Как я вижу в вашем примере текста, у вас есть только теги «p» и «span», которые необходимо обработать. И вы, видимо, хотите удалить все стили внутри них. В этом случае вы можете рассмотреть возможность удаления всего внутри этих тегов, оставьте их простыми < p> или < span>.

Я не знаю о Notepad ++, но простая программа C# может быстро выполнить эту работу.

0

Предполагая <spanlang=NL опечатка (должно быть <span lang=NL), я бы:

Найти: (<\w+)[^>]*>
Заменить: $1>

0

Если вы не возражаете делать немного программирования: HTMLAgilityPack может легко удалить скрипты/стили/wathever из вас xml/html.

Пример:

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(html); 

doc.DocumentNode.Descendants() 
       .Where(n => n.Name == "script" || n.Name == "style") 
       .ToList() 
       .ForEach(n => n.Remove()); 
2

Я думаю, что эта модель будет стереть все стили в "р" и теги "пролетных":

((?<=<p)|(?<=<span))[^>]*(?=>)

=> как это работает:

  • ((?<=<p) | (?<=<span)): Это LookB ehind блок, чтобы убедиться , что строка, которую мы ищем приходит после <pИЛИ<span

  • [^>]*: Искать любой символ, который не является > характер

  • (?=>): Это LookAfter блок, чтобы убедиться, что
    строка, которую мы ищем, находится перед > символом

PS: Проверено на Notepad ++