Скачать 1.04 Mb.
|
^ Функции работы с подстроками позволяют выполнить операции поиска подстрок в строке и замены подстрок в строке. Однако при работе с данными часто приходится выполнять операции поиска и замены по довольно сложным алгоритмам, например, найти первое вхождение цифры в строке. Хотя такие операции можно выполнить, используя функции работы со строками, условные операторы и операторы цикла, существует более удобный способ решения подобного рода задач – использование регулярных выражений. Впервые регулярные выражения стали использоваться в командном интерпретаторе и утилитах операционной системы Unix. Первым языком программирования, в который были введены средства работы с регулярными выражениями, стал язык Perl. В последние версии языка JavaScript также введены средства работы с регулярными выражениями. Помимо Perl и JavaScript, возможность использования регулярных выражений появилась в последних версиях языков Java, VBScript и PHP. Средства работы с регулярными выражениями в этих языках практически совпадают, поэтому рассматриваемый ниже материал может быть использован при написании программ или сценариев с использованием этих языков. Регулярные выражения используются для решения следующих задач:
Регулярные выражения часто используются в программах для проверки вводимых данных, которые должны иметь определенный формат, например, телефоны или адреса электронной почты. ^ Объект Regular Expression содержит шаблон, а также опции, которые используются при поиске строки. Объект может быть создан одним из двух способов: var имя-переменной = /шаблон/ [опции] или var имя-переменной = new RegExp("шаблон"[,"опции "]). В первом случае объект для заданного шаблона создается напрямую. Во втором случае создание объекта выполняется с помощью создания экземпляра встроенного объекта RegExp, рассматриваемого в следующем разделе. Параметр шаблон содержит шаблон регулярного выражения. В простейшем случае шаблон представляет собой строку, которую надо найти или заменить в строке поиска, например, шаблон "Иванов" означает поиск или замену строки Иванов в строке поиска. Необязательный параметр опции содержит следующие опции:
Глобальный поиск предполагает поиск всех соответствий шаблону в строке (по умолчанию выполняется поиск только первого соответствия). ^ символов означает, что регистр символов в шаблоне игнорируется, т.е. строки "поиск", "Поиск" и "ПОИСК" будут соответствовать шаблону "поиск" (по умолчанию шаблону будет соответствовать только первая строка). Поиск соответствий шаблону для шаблонов, зависящих от положения в строке (в начале или в конце строки), выполняется во всех строках внутри строки (по умолчанию такой поиск выполняется только в первой строке). Строки внутри строки задаются с помощью символа "\n". В параметре опции могут быть заданы одна или несколько из перечисленных опций в любом порядке как строка символов (без пробелов и запятых между опциями). Перед использованием параметр шаблон преобразуется во внутренний формат. При использовании первого способа такое преобразование выполняется при загрузке сценария, поэтому первый способ используется, когда известно, что шаблон не будет меняться во время работы сценария. Если же шаблон является динамическим, т.е. может изменяться в процессе выполнения сценария, то используется второй способ, поскольку при его использовании шаблон загружается либо непосредственно перед его выполнением, либо при вызове метода compile(). Пример 4.4.73. Создание объекта для шаблона: 1. var re1 = /abc/i; Переменная re1 задает поиск или замену для шаблона /abc/ без учета регистра, т.е. такое задание эквивалентно заданию группы следующих шаблонов: "abc", "ABC", "abC", "aBC", "aBc", "Abc", "ABc" и "AbC". 2. var re2 = new RegExp("34","g"); Переменная re2 задает поиск или замену для всех соответствий шаблону /34/ в строке. Объект Regular Expression имеет следующие свойства:
Пример 4.4.74. Использование свойств объекта Regular Expression: Следующий фрагмент сценария: // Вывод свойств re1 alert("re1.global=" + re1.global + "\nre1.multiline=" + re1.multiline + "\nre1.ignoreCase=" + re1.ignoreCase + "\nre1.source='" + re1.source + "'"); // Вывод свойств re2 alert("re2.global=" + re2.global + "\nre2.multiline=" + re2.multiline + "\nre2.ignoreCase=" + re2.ignoreCase + "\nre2.source='" + re2.source + "'"); выводит свойства объявленных в примере 4.4.73 переменных re1 и re2:
Объект Regular Expression содержит также три встроенные функции: test(), exec() и compile(). Функция test(строка) возвращает true, если шаблон объекта Regular Expression содержится в строке и false – в противном случае. Пример 4.4.75. Использование функции test()объекта Regular Expression: re3 = /Internet/g; // Шаблон глобального поиска // Поиск слова Internet в первой строке isEnglishWord = re3.test("Технологии Internet (обзор)"); // Вывод значения переменной isEnglishWord // и значения свойства lastIndex alert("isEnglishWord=" + isEnglishWord + "\nre3.lastIndex=" + re3.lastIndex); // Поиск слова Internet во второй строке isRussianWord = re3.test("Технологии Интернет (обзор)"); // Вывод значения переменной isRussianWord // и значения свойства lastIndex alert("isRussianWord=" + isRussianWord + "\nre3.lastIndex=" + re3.lastIndex); re3_1 = /Internet/; // Шаблон одиночного поиска // Поиск слова Internet в первой строке isEnglishWord = re3_1.test("Технологии Internet (обзор)"); // Вывод значения переменной isEnglishWord // и значения свойства lastIndex alert("isEnglishWord=" + isEnglishWord + "\nre3_1.lastIndex=" + re3_1.lastIndex); Вывод этого фрагмента сценария будет иметь следующий вид:
Если в шаблоне установлен глобальный поиск (опция g), то в случае, если шаблон объекта найден в строке, свойство lastIndex содержит значение индекса символа, следующего за найденным шаблоном (пробела после слова Internet). Если шаблон не найден, свойство lastIndex содержит значение. Если опция g для шаблона не установлена, значение lastIndex всегда равно 0 для всех Web-браузеров, кроме Internet Explorer. Функция exec(строка) выполняет поиск в строке с использованием шаблона. Если шаблон, не найден в строке, функция возвращает значение null. В противном случае функция возвращает переменную, содержащую результат поиска соответствия шаблону. Если в шаблоне поиска установлена опция g, то каждый следующий поиск начинается с позиции в строке, соответствующей текущему значению свойства lastIndex, в противном случае каждый поиск начинается с начала строки. Возвращаемое функцией в результате поиска значение имеет два свойства: свойство index, содержащее позицию начала найденного соответствия шаблону (первая позиция в строке равна 0) и свойство input, содержащее исходную строку, в которой производится поиск. Пример 4.4.76. Использование функции exec()объекта Regular Expression: // Исходная строка inputString = "Компьютерная сеть - это компьютеры, " + "связное оборудование и каналы связи."; // Определение шаблона var re4 = /компьютер/gi; // Первый вызов exec() var reArray = re4.exec(inputString); // Вывод свойства input для результата alert("Исходная строка='" + reArray.input +"'"); // Объявление переменной цикла var i; // Поиск всех соответствий шаблону в цикле for (i = 0;reArray != null;i++) { // Вывод текущих значений // свойств index и lastIndex результата alert("index[" + i + "]=" + re4.index + " lastIndex[" + i + "]=" + re4.lastIndex + " result[" + i + "]='" + reArray + "'"); // Следующие вызовы exec() reArray = re4.exec(inputString); } // Вывод количества вхождений // строки шаблона в исходной строке alert("Количество вхождений строки '" + re4.source + "' равно " + i); В результате работы фрагмента на экран будут выведены следующие сообщения:
^ compile("шаблон"[,"опции "]) преобразует шаблон во внутренний формат для более быстрого выполнения с использованием заданных опций. Эта функция обычно используется, когда поиск соответствий шаблону выполняется в цикле и шаблон во время выполнения цикла не меняется. Пример 4.4.77. Использование функции compile() объекта Regular Expression: Пример использования функции compile(). Если в примере 4.4.75 после определения шаблона re4 добавить предложение // Компиляция шаблона re4.compile("компьютер", "ig"); то цикл поиска соответствий шаблону в строке будет выполняться быстрее. |
![]() | Создание документа (размеры, цвет фона, частота кадров). Выравнивание объектов в документе | ![]() | Дополнения к Перечню объектов коммунальной собственности, включенных в перечни объектов |
![]() | Ия 17 объектов коммунальной собственности. С учетом 6-и объектов, переходящих из Перечня объектов, подлежащих приватизации в 2005... | ![]() | Цель работы: Изучить основные виды и способы анимации параметров объектов в 3d studio max: анимация по ключевым кадрам, анимация... |
![]() | В отличие от финансовых инвестиций, недвижимость имеет явно выраженную материальную форму, более высокий уровень защиты от инфляции,... | ![]() | Анализируя свойства этих простых трехмерных геометрических объектов можно сделать вывод о том, что форма каждого из них имеет свои... |
![]() | Инспектирование грузов и объектов (Агро сектор, Металлургия). Управление залоговым хранением. Техническое инспектирование объектов... | ![]() | Многократное копирование элементов и объектов. Полукруглые, круглые стены с возможностью редактирования. Загрузка объектов в режиме... |
![]() | Диаграммы объектов применяют при моделировании статических видов системы с точки зрения проектирования и процессов. При этом моделируется... | ![]() | Целью Программы является создание банка данных для обеспечения органов исполнительной власти полноразмерными копиями документов и... |