Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек 009.doc
Скачиваний:
23
Добавлен:
07.02.2015
Размер:
40.96 Кб
Скачать

Лекция 9

Объектная модель конечного автомата регулярных выражений. COM сервер внутри процесса VBScript.DLL.

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

Знакомство

Регулярные выражения - механизм, предложенный Microsoft при использовании VBScript 5.0 и выше. Данный движок можно использовать и в Visual Basic. Если вы программировали на Perl или JavaScript, то возможно уже знакомы с понятием "Регулярные выражения".

Возможности регулярных выражений

С помощью регулярных выражений вы можете

  1. Сравнить текст с заданным шаблоном. Например, телефонный номер должен содержать только цифры или электронный адрес должен содержать специальный символ "@", после которого идут слова, разделенные точкой.

  2. Заменить текст. Вы можете либо удалить требуемый кусок текста, либо заменить его на текст с другим содержанием

  3. Извлечь интересующую строку, игнорируя остальной текст

Системные требования

Регулярные выражения являются частью технологии Microsoft Windows Script Technologies и входит в VBScript. Для использования движка Регулярных выражений вам необходимо иметь библиотеку vbscript.dll (загрузить VBScript DLL вы можете с http://www.microsoft.com/msdownload/vbscript/scripting.asp). Данная библиотека включена в Internet Explorer 4 и выше.

Подключение библиотеки к Visual Basic

Откройте новый проект на Visual Basic. Далее через Project->References подключите Microsot VBScript Regular Expressions 5.5.

Теперь можно использовать объект RegExp

Dim myReg As RegExp

Set MyReg = new RegExp

' Устанавливаем свойства объекта

MyReg.IgnoreCase = True

MyReg.Global = True

MyReg.Pattern = "abc" ' шаблон

Text1.Text = myreg.Replace(Text1.Text, "My ")

В этом примере использовали шаблон, игнорирующий регистр букв (IgnoreCase) и заменяющий все (Global) субстроки "abc" в строке с помощью метода Replace на строчку "My ". Для замены только первого вхождения субстроки установите свойство Global в False.

Синтаксис регулярных выражений

Регулярные выражения, выражаясь простым языком, - это образец текста, который состоит из одиночных обычных символов или особых, так называемых метасимволов (metacharacters). Образец описывает одну или несколько строк и служит как шаблон при поиске в заданном тексте. Для ясности, приведем несколько примеров применения шаблонов в VBScript/Visual Basic:

" \d {2}-\d {5} "

Данный шаблон проверяет правильность номера ИДЕНТИФИКАТОРА, состоящего из 2 цифр, дефиса, и еще 5 цифр

"<(.*)>.*<\/\1>"

Соответствует тегу HTML

Список метасимволов достаточно обширен. Здесь приводится только часть из них. За более полной информацией о метасимволах обращайтесь к документации.

Символ

Описание

*

Определяет ни одного или несколько символов, стоящих перед ним. Пример: "ab*c" - символ a, затем ни одного или несколько символов b, и символ c

\

Показывает, что следующий символ является спецсимволом, константой и т.п. Например, шаблон 'n' ищет символы "n", а '\n' уже ищет символ новой строки. Последовательность '\\' соответствует "\" и "\(" соответствует "("

^

Определяет начало входной строки

$

Определяет конец входной строки

+

Соответствует данному выражению один или более раз. Например, zo+соответствует "zo" и "zoo", но не "z"

.

Соответствует любому символу, кроме '\n' (символа новой строки). Чтобы найти любой символ, включая \n, используйте что-нибудь вроде '[.\n]'. Например: "a." - символ a, за который следует любой одиночный символ

x|y

Соответствует одному из вариантов (x или y). Например, 'z|food' соответствует "z" или "food". '(z|f)ood' соответсвует "zood" или "food"

\d

Соответствует цифре. То же, что и [0-9]

\D

Не цифра. То же, что и [^0-9]

\w

Соответствует любому символу слова, включая символ подчеркивания. Эквивалентно выражению '[A-Za-z0-9_]'

\s

Пробельный символ (space, tab, и т.п.). Эквивалентно выражению "[ \r\t\n\f]"

\S

Непробельный символ. Эквивалентно выражению "[^ \r\t\n\f]"

[a-z]

Диапазон символов. Соответствует любому символу в указанном диапазоне. Например, "[1-5]" соответствует числам от 1 до 5

[^a-z]

Класс отрицания. Например: "[^A-Z]" - соответствует любому символу, крому любой заглавной латинской буквы

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]