Перейти к содержимому



Удаление\Изменение тегов

#1 eacl

eacl
  • Пользователь
  • 31 сообщений
  • Репутация: 1
0

Отправлено 06 Сентябрь 2012 - 18:42

Люди подскажите редактор\способ, как изменить определенные теги и их свойства. Например у меня есть html файл, мне нужно изменить только все теги <span class="textsize"> </span> на <div class="text1"> </div>


Это можно сделать в принципе в редакторе выполнить: замену <span class="textsize"> на <div class="textss"> ну ведь тогда не получиться заменить </span> на </div> вернее заменяться все закрывающие теги </span> на </div> а мне нужно только определенные, не все.

Что посоветуете?

 

 

  • 0

#2 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 06 Сентябрь 2012 - 20:38

Что посоветуете?

Воспользоваться возможностями регулярных выражений.
В том же редакторе Notepad++ открываем меню "Поис - Замена", выбираем режим поиска "Регулярное выражение" и составляем регулярку, она будет такой (ее помещаем в поле "Найти"):
<span class="textsize">([^<>]+)</span>
Ну а в поле "Заменить на" указываем на что меняем:
<div class="text1">\1</div>
Все - жмем "Заменить все" и получаем количество произведенных замен.
Ниже, на всякий случай, скрины:

Прикрепленные изображения

  • before.jpg
  • after.jpg

  • 1


#3 eacl

eacl
    Topic Starter
  • Пользователь
  • 31 сообщений
  • Репутация: 1

Отправлено 06 Сентябрь 2012 - 22:36

Спасибо огромнейшее!!! Не просто ткнул в нужное место, а рассказал, еще и с примерами... Просто величайшее.. спасибо!!! Это то что нужно, все вместе и удобно, в блокноте.
Я смотрел во многих блокнотах, emeditor notepad в том числе но ничего так и не нашёл...

Про регулярку, что она существует в Notepad, вообще незнал, сократили там её еле найдеш, выдялить такое надо и по крупнее.

Уже даже вопрос сам по себе отпадает, как я вижу со скриншотов если между тегами спана есть текст то все ок, и заменяться только теги...?


Уже как только не думал чем это сделать, кучу блокнотов перерыл dreamweawer"ы всякие все бес толку, еще раз спасибо !!!
  • 0

#4 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 06 Сентябрь 2012 - 22:54

Уже даже вопрос сам по себе отпадает, как я вижу со скриншотов если между тегами спана есть текст то все ок, и заменяться только теги...?

Абсолютно точно. Если мы имеем элемент span с классом textsize и внутри этого спана есть хотя бы 1 символ, то открывающий спан и закрывающий тег этого элемента будут заменены на div с классом text1. Содержимое остается неизменным.

Спасибо огромнейшее!!!

Пожалуйста :)
  • 0


#5 eacl

eacl
    Topic Starter
  • Пользователь
  • 31 сообщений
  • Репутация: 1

Отправлено 07 Сентябрь 2012 - 12:39

И еще последнее какой должна быть регулка для данного участка
<span class="textsize"><strong>test</strong></span>
на
<div class="text1"><strong>test</strong></div>
или
<span class="textsize">test<br></span>
на
<div class="text1">test<br></div>

  • 0

#6 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 07 Сентябрь 2012 - 15:03

Просто добавить новые теги - strong или br.
В первом случае регулярное выражение такое:
<span class="textsize"><strong>([^<>]+)</strong></span>
Замена такая:
<div class="text1"><strong>1</strong></div>

Во втором случае регулярное выражение такое:
<span class="textsize">([^<>]+)<br></span>
Замена такая:
<div class="text1">1<br></div>

  • 0


#7 eacl

eacl
    Topic Starter
  • Пользователь
  • 31 сообщений
  • Репутация: 1

Отправлено 08 Сентябрь 2012 - 00:23

Да действительно, спасибо то я пробовал, наверно где-то ошибся. Уже начинаю по-немногу разбираться спасибо!:)
  • 0

#8 eacl

eacl
    Topic Starter
  • Пользователь
  • 31 сообщений
  • Репутация: 1

Отправлено 17 Сентябрь 2012 - 22:02

А как задать начало фрагмента ввиде цифр пробовал но не получается

1 текст
2 текст
3 текст
4 текст
5 текст



([0-5]d)([^<>]+)

1

  • 0

#9 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 17 Сентябрь 2012 - 22:54

Что значит "задать начало фрагмента ввиде цифр"? Что нужно получить? Из чего? Чем-то заменить? Или что-то найти?
Регулярные выражения - вещь очень мощная, но увы - не универсальная. Для того, чтобы составить работающее регулярное выражение, нужно четко знать с чем оно должно работать и что должно получиться на выходе.
Если понимать буквально фразу "задать начало фрагмента ввиде цифр", то цифры задаются литералами цифр: 0-9 либо метасимволом: d. Вот Вы в своем выражении указали, что в начале должны идти обязательные 2 цифры, если прочитать Ваше регулярное выражение - ([0-5]d)([^<>]+) - то буквально оно значит: одна цифра от 1 до 5, далее одна цифра от 0 до 9, далее как минимум один любой символ, кроме символов <>, и все 2 группы в сохраняющих скобках... ну а теперь сами себе задайте вопрос - и что должно делать это выражение?
В общем, на будущее - конкретнее формулируйте вопрос.
  • 0


#10 eacl

eacl
    Topic Starter
  • Пользователь
  • 31 сообщений
  • Репутация: 1

Отправлено 18 Сентябрь 2012 - 12:47

Вообщем у нас есть текст в виде списка

1 текст.
2 текст.
3 текст.
4 текст.
5 текст.

Единственным вариантом за который можно зацепиться это цифры от 1 до 5.(начало, и в тоже время конец, номер следующего пункта)
Я хотел составить регулярку, чтоб она брала начало нужного фрагмента, который начинаеться цифрой от 1-5. Конец можно было бы задать точкой. Но есть варианты когда список состоит не из одного предложения, может можно задать так

(1-5 начало) 1 текст.(1-5 конец т.е. в данном случае 2) и в тоже время что б следующая цифры 2 была началом следующего регулярного выражения
2 текст.
3 текст.
4 текст.
5 текст

Надеюсь четко излагал свои мысли
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru