2011-01-13 5 views
2

Я попытался использовать следующее регулярное выражение для удаления HTML пробелы и ведущие пробелыRegex заменить HTML пробелы и ведущие пробелы в Notepad ++

Find: \s*([<>])\s* 

Replace: $1 

Но каждый раз, когда я делаю это я в конечном итоге с 186 появлений $ 1 буквально в моем документе. Любая помощь будет принята с благодарностью

Вот пример того, что я говорю о

Это

<fieldset id="prod_desc"> 
<p>Original AA </p> 
<b>Features:</b> 
<ul> 
    <li>2 pole rectangular dome tent with 13.4 sq ft of vestibule storage </li> 
    <li>Durable, shockcorded, self-supporting fiberglass frame and ring and pin/pole pocket assembly </li> 
    <li>2 side opening door panels are constructed entirely of no see-um mesh to maximize air flow inside </li> 
    <li>Poke-out vent in side wall allows the option of additional ventilation when needed </li> 
    <li>2 interior storage pockets keep essential items handy Specifications: </li> 
    <li>Season: 3 </li> 
    <li>Sleeps: 2 </li> 
    <li>Doors: 2 </li> 
    <li>Windows: 2 </li> 
    <li>Weight: 5 lbs 12 oz </li> 
    <li>Area: 36.5 Sq. Ft. </li> 
    <li>Center Height: 3' 7.5&quot;</li> 
</ul> 
</fieldset> 

должны стать:

<fieldset id="prod_desc"><p>Original AA</p><b>Features:</b><ul><li>2 pole rectangular dome tent with 13.4 sq ft of vestibule storage</li><li>Durable, shockcorded, self-supporting fiberglass frame and ring and pin/pole pocket assembly</li><li>2 side opening door panels are constructed entirely of no see-um mesh to maximize air flow inside</li><li>Poke-out vent in side wall allows the option of additional ventilation when needed</li><li>2 interior storage pockets keep essential items handy Specifications:</li><li>Season: 3</li><li>Sleeps: 2</li><li>Doors: 2</li><li>Windows: 2</li><li>Weight: 5 lbs 12 oz</li><li>Area: 36.5 Sq. Ft.</li><li>Center Height: 3' 7.5&quot;</li></ul></fieldset> 
+0

попытаться заменить на '\ 1' –

+0

Я бы посмотрел плагин, возможно, HTML Tidy с соответствующими настройками. Анализ HTML с регулярными выражениями приводит к боли. – TrueWill

ответ

4

Notepad ++ не поддерживает $1 для обратных ссылок до версии 6.0, когда он представил поддержку PCRE для поиска и замены. Для более старых версий используйте \1 для обратных ссылок.

Вы должны найти \s*(<[^>]+>)\s*. Начиная с версии Notepad ++ версии 6.0, выпущенной в марте 2012 года, это само по себе должно работать для вас. Я попробовал свое оригинальное регулярное выражение, и он тоже работает, к моему удивлению.

Предыдущие версии не могут выполнять многострочные регулярные выражения. Для того, чтобы лишить новую строку, выполнить замену регулярных выражений, а затем сделать расширенную находку (UNIX окончаниях строк):

\n 

Для линейных окончаний Windows:

\r\n 

Replace либо дела ни с чем.

+0

\ 1 не выполнил трюк – capnhud

+0

@capnhud: он не должен заменять буквально '\ 1' по крайней мере; см. мое редактирование. – BoltClock

+0

, когда я говорю, что это не трюк, я имел в виду, что он не заменяет буквальным $ 1, а вместо этого просто удаляет ведущие пробелы перед тегами в каждой строке. Поэтому вместо того, чтобы заканчивать только одной строкой со всем html, у меня все еще есть 75 строк. – capnhud

0

Вы можете использовать выражение \s+\<(.*)\>\s+ и заменить $ 1 (или \ 1 в Notepad ++)

Или вы могли бы использовать этот подход:

  • первый, матч \s+\< и заменить <
  • секунду , матч \>\s+ и заменить на >
+0

это выражение по-прежнему выполняется так же, как \ s * ([<>]) \ s * они не удаляются линии. – capnhud

+0

Похоже, что Notepad ++ имеет какое-то смешное поведение при поиске в регулярном выражении, возможно, только для поиска по очереди. '\ s +' должен работать. Вы всегда можете просто следить за ним с помощью поиска '\ n', заменить его ничем. –

+0

BoltClock только что определил меня, что блокнот ++ не выполняет многострочные регулярные выражения. – capnhud

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