soft :: интернет

Dreamweaver MX. Работа с кодом 3: поиск и замена


Dreamweaver MX. Работа с кодом 3: поиск и замена

Сегодня мы поговорим о весьма полезном инструменте с широкими возможностями, которые не всегда используются в полном объеме. Это механизм поиска и замены пакета Dreamweaver MX. Казалось бы, чего тут такого особенного? Ну, поиск, ну, замена — так они во многих программах имеются. Забегая немного вперед, сразу скажем, что не стоит его недооценивать — он вполне способен преподнести некоторые сюрпризы.

Поиск и замена
Открыть окно Find And Replace можно стандартной для многих приложений горячей комбинацией Ctrl+F. Если вы по каким-то причинам предпочитаете меню, то вам в Edit — Find And Replace. Находясь в Code View, вы можете вызвать правым щелчком контекстное меню, в котором также есть пункт Find And Replace. Вы можете запустить Find And Replace даже если у вас в данный момент нет открытых документов. Данный инструмент начинает демонстрировать свои особенности сразу после запуска. Он не мешает вам одновременно работать с окнами и другими инструментами Dreamweaver MX, гуляя, как известная кошка — абсолютно самостоятельно. Располагается названное окно всегда на виду, поверх остальных элементов интерфейса.

Давайте познакомимся с его управляющими элементами. Первым делом следует определиться, где вы будете искать. Для этого предназначен выпадающий список Find In. Доступны 4 варианта: поиск в активном документе, поиск по всему локальному сайту, по выбранным файлам сайта и, наконец, в указанном каталоге. Рассмотрим их подробнее.
Поиск по активному документу (Current Document) — самый простой и привычный вариант, доступный при наличии открытой в Document Window web-страницы, заголовок которой при этом будет отображен рядом со списком Find In. В случае отсутствия открытого документа он недоступен, а рядом с полем появится надпись [no current document].

Поиск по всему локальному сайту (Entire Local Site). Этот вариант куда интереснее первого. Он позволяет искать заданный фрагмент на всех страницах сайта, а также в текстовых документах, находящихся в пределах вашего проекта. Имя сайта также будет отображено рядом со списком Find In. Изменить предложенный программой вариант по умолчанию (сайт, активный в данный момент) можно путем выбора требуемого сайта на панели инструментов Site (Window — Site или же F8). Теперь вы можете, например, заменить определенный элемент, кусок кода или текст, встречающийся на всех страницах вашего сайта. Причем производится такое редактирование быстро, без необходимости открытия и правки каждой отдельной страницы. Среди клиентов в очереди на такую обработку — заголовки, ссылки, параметры оформления и при необходимости даже довольно крупные повторяющиеся элементы типа таблиц.
Поиск по выделенным файлам (Selected Files in Site). Похож на рассмотренный выше поиск по сайту, однако здесь вы имеете возможность указать конкретные файлы и каталоги сайта, в которых нужно искать. Откройте панель инструментов Site и, щелкая по нужным файлам с одновременным удерживанием клавиш Ctrl или Shift, сделайте свой выбор. Имена отобранных файлов будут показаны рядом с полем Find In. Поскольку окно Find And Replace все время на виду, одновременная работа с другими панелями инструментов проблемой не является.

Поиск по произвольному каталогу (Folder). Еще один весьма любопытный вариант. Данный режим напоминает поиск по сайту, однако не требует наличия сконфигурированного сайта Dreamweaver. Вам просто необходимо будет указать путь к нужной папке, содержащей файлы поддерживаемых типов. Таким образом, вы сможете работать "на коленке", например, с чужим готовым сайтом, даже не заводя собственный отдельный проект. Этот режим также пригодится и в некоторых других ситуациях.
Следующая опция диалога Find And Replace — это список Search For. Здесь вы можете указать характер текстового фрагмента, который вам требуется отыскать. Поскольку влияние названной опции на результат поиска значительно, давайте рассмотрим предлагаемые варианты.
Поиск по коду (Source Code). Сравнительно простой вариант поиска на полное совпадение внесенной вами строки кода с соответствующим участком на странице.
Он же является самым надежным способом что-либо найти. В этом режиме все теги разметки рассматриваются как текст. Это означает, что, если вы, допустим, хотите найти ссылку с текстом "Вам сюда", то в поле справа надо набирать: <a href="somefile.html">Вам сюда</a>. Таким образом, бесхитростный характер такого поиска оказывается весьма кстати, если вам надо найти фрагмент с тегами или определенный участок HTML-кода.
Поиск по тексту (Text). Несколько более интеллектуальный вариант. Теги разметки при поиске игнорируются. Проще всего объяснить его механизм можно, наверно, так: представляйте, что поиск будет вестись по тому тексту, который вы можете увидеть, переключившись в визуальный режим редактирования web-страницы. Это в том числе означает, что, если в приведенном выше примере к слову "Вам", допустим, применено особенное оформление (и соответствующий код), то это никак не помешает нахождению фразы, набранной в поле целиком.

Сложный поиск по тексту (Text (Advanced)). Еще более продвинутый вариант, определенным образом объединяющий свойства двух первых. Поиск ведется как по коду, так и по тексту. При этом вы сможете отыскать, например, одинаковый текст с различным оформлением. Обратите внимание на изменения, произошедшие с окном диалога: здесь появилось два новых поля. С их помощью можно, во-первых, определить, будете вы искать внутри или вне тегов (Inside Tag и Not Inside Tag соответственно), а также указать этот самый тег, выбрав его из списка доступных. Нажав на кнопку с "+", вы получите возможность добавить аналогичное условие на любой атрибут тега и даже его значение. При составлении запроса доступны дополнительные операторы "равно", "не равно", "больше чем", "меньше чем", что дает весьма гибкие возможности поиска.
Поиск определенного тега (Specific Tag). Как и следует ожидать от режима с таким названием, он предназначен для поиска тегов, их атрибутов или определенных значений. Выберите из списка или введите в поле нужный тег. Можете оставить значение [any tag] — любой тег. Далее, если есть такая необходимость, определитесь со значениями его атрибутов. Это похоже на режим Text (Advanced). Среди вариантов — поиск по конкретному атрибуту (With Attribute) тега, а также поиск тега или фрагмента, содержащегося внутри другого тега (Inside Tag и Containing). Есть и обратные варианты: Without Attribute, Not Inside Tag и Not Containing.

Во всех рассмотренных случаях на панели Find And Replace присутствует несколько общих опций, которые нельзя оставить без внимания. Начнем с возможности сохранения и многократного использования составленных запросов. Для этого служат кнопки с классическими пиктограммами — "дискетка" и "открытая папка". Первая сохраняет ваш запрос как .dwq- или .dwr- (Dreamweaver Find/Replace Query) файл. Вторая — открывает ранее сохраненный файл такого типа.
Осталась еще одна группа из трех настроек, расположенная в нижней части окна и обозначенная как Options. При активизированной опции Match Case поисковик пакета Dreamweaver становится чувствительным к регистру символов в поисковых фразах. Ignore Whitespace Differences — игнорирование (или учет — как настроите) пробелов в поисковой фразе. Не работает при использовании регулярных выражений. Use Regular Expressions — это опция, активизирующая возможность применения в запросе регулярных выражений и соответствующих операторов. Это сильный инструмент, поэтому ниже мы остановимся на таких выражениях подробнее.
Как вы могли заметить, найдя тем или иным способом нужный фрагмент кода или текста, вы можете заменить его, внеся новый код или текст в поле Replace With. Выберите требуемые пункты из ниспадающих списков и впишите новое значение в поле To. В случае режима Specific Tag для этого применяется раздел Action, который позволяет определить параметры изменения найденных атрибутов. Завершается работа с диалогом кнопками Find/Find All или Replace/Replace All. Если вы выберете Find или Replace, то все найденные совпадения с поисковой фразой будут по очереди подсвечиваться на открытой в Document Window странице.



Если вы искали по группе файлов, то содержащие нужный фрагмент страницы будут открываться в порядке живой очереди. Перейти к следующему найденному вхождению можно кнопкой Find Next или же клавишей F3. В случае выбора Find All или Replace All результаты будут представлены в виде списка на вкладке Search панели инструментов Results. Здесь же, кстати, есть кнопки запуска и остановки процесса поиска. Щелкая по позициям списка, вы сможете перемещаться по найденным совпадениям. Произведенные замены также отображаются списком с точкой слева от таких позиций. Помните: если они были сделаны в документах, которые не были в этот момент открыты в Dreamweaver, штатная отмена этого действия невозможна. Пакет выводит соответствующее предупреждение, однако не стоит его опасаться — в случае ошибки вам сможет помочь все тот же инструмент Find And Replace, но уже с заменой новых значений на старые.

Регулярные выражения

Сфера применения таких конструкций весьма широка и позволяет достичь значительной гибкости в работе. Задавая при поиске файлов на собственном компьютере маски типа *.mp3, вы используете регулярные выражения. Пакет Dreamweaver также поддерживает использование собственных операторов для составления таких выражений. Возможности у такого поиска довольно богатые, поэтому при необходимости не стесняйтесь их использовать. Только не забывайте включать в диалоге Find And Replace опцию Use Regular Expressions, иначе все ваши ухищрения ни к чему хорошему не приведут.

Очень полезной на первых (да и не только на первых) порах может оказаться стандартная табличка со списком и примерами использования регулярных выражений в Dreamweaver, которую мне хотелось бы вам предложить. Приведенные в ней символы можно комбинировать, получая таким образом самые изощренные комбинации. Можете ее вырезать и держать где-нибудь под рукой. Для того, чтобы найти текст, в котором содержатся какие-либо спецсимволы, поставьте в запросе перед таким символом обратный слэш. То есть, чтобы найти, например, "*", вам надо будет набрать "\*".

Время подвести итоги. С помощью инструмента Find And Replace вы буквально за считанные минуты сможете перелопатить весь свой сайт, изменив его до неузнаваемости, естественно, к лучшему. Причина его эффективности — текстовая природа готового продукта — кода web-страниц. Поскольку, работая с Dreamweaver, мы так или иначе работаем с текстом (кодом), то, найдя или изменив фрагмент кода страницы, можно повлиять на характеристики любого находящегося на этой странице объекта. Благодаря своим широким возможностям инструмент поиска и замены Dreamweaver способен оказать существенную помощь в редактировании кода ваших web-страниц.
Оператор Что ищем? Пример
^ Символ в начале строки ^Э найдет “Э” в “Этот прекрасный мир”, но ничего не найдет в “Мир этот - прекрасен”
$ Символ в конце строки р$ найдет “р” в “командир”, но ничего не найдет в “командировка”
* Заданный символ, встречающийся от нуля до любого количества раз от* найдет “от” в “кот”, “отт” в “отток”, и “о” в “рок”
+ Заданный символ, встречающийся один или несколько раз от+ найдет “от” в “кот” и “отт” в “отток”, но ничего не найдет в “рок”
? Заданный символ, встречающийся как минимум один раз (символа может и не быть) st?on найдет “son” в “Johnson” и “ston” в “Johnston”, но ничего не найдет в “Appleton” или “tension”
. Один любой символ, кроме символа новой строки. .ат найдет “гат” и “ват” во фразе “Агрегат на сто ватт”
x|y Значение x или значение y FF0000|0000FF найдет “FF0000” в bgcolor=”#FF0000” и “0000FF’” в font color=”#0000FF”
{n} Точно n повторений заданного символа а{2} найдет “аа” в “Маастрихт” и две первые “а” в “Дааа…”, но ничего в “давай”
{n,m} Минимум n и максимум m повторений заданного символа F{2,4} найдет “FF” в “#FF0000” и первые четыре “F” в #FFFFFF
[abc]
[a-c]
Любой символ из перечисленных в скобках. Можно задавать промежуток [а-в] найдет “а” в “дар”, “б” в “борт” и ”в” в “готов”
[^abc]
[^a-c]
Любой символ, кроме перечисленных в скобках. Можно задавать промежуток [^aeiou] найдет “r” в “orange”, “b” в “book”, и “k” в “eek!”
\b Символ на границе слова (граница слова здесь - пробел или возврат каретки) \bb найдет “b” в “book”, но ничего не найдет в “snob” или “goober”
\B Символ внутри слова \Bb найдет “b” в “goober”, но ничего не найдет в “book”
\d Любое число (эквивалент [0-9]) \d найдет “3” в “ графика 3D” и “2” в “Ил-2”
\D Любой не числовой символ (эквивалент [^0-9]) \D найдет “M” в “M-16” и “D” в “3D”
\f Переход к следующей странице
\n Перевод строки
\r Символ возврата каретки.
\s Любой символ, в том числе пробела, табуляции, перевода строки и страницы \sbook найдет ”book” in “blue book”, но ничего в “notebook”
\S Любой символ, кроме любого разделителя. \Sbook найдет “book” в “notebook”, но ничего в “blue book”
\t Символ табуляции
\w Любой числовой или буквенный символ, в том числе подчеркивание (эквивалент [A-Za-z0-9_]) б\w* найдет “будка” в “сторожевая будка”, а также “большая” и “белая” в “большая белая птица”
\W Любой символ, не относящийся к числовым и буквенным (эквивалент [^A-Za-z0-9_]) \W найдет “&” в “Pratt & Whitney” и “%” в “50%”
Ctrl+Ввод
Shift+Ввод
Символ возврата (не перенос строки), отображаемый в визуальном режиме пробелом

Алексей Кутовенко, alteridem@tut.by

© компьютерная газета



© компьютерная газета