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

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

Регулярные выражения имеют 4 свойства и 3 функции Свойства

Global

Проверка на шаблон по всему тексту. По умолчанию установлен в False(до первого соответствия). Для проверки всего текста используйтеTrue

IgnoreCase

Проверка на регистр символов. По умолчанию установлен в False(игнорировать регистр)

Pattern

Строка, используемая как шаблон. Данный шаблон необходимо создать перед использованием объекта RegExp

Multiline

Булево значение, определяющее вид объекта (многострочное или однострочное)

Функции

Function Replace(sourceString As String, replaceVar) As String

Функция использует два аргумента - заданную строку и строку для замены. Если в заданном тексте существует соответствие шаблону, то текст заменяется на второй аргумент и возвращается измененная строка. В противном случае возвращается строка-оригинал

Function Execute(sourceString As String) As Object

Аналогична функции Replace, за исключением того, что возвращается коллекция Match. Функия не изменяет первоначальную строку

Function Test(sourceString As String) As Boolean

Функция использует строку в качестве аргумента и возвращает True, если строку соответсвует шаблону, иначе возвращаетсяFalse

Использование некоторых свойств и функций уже приводился в примере в начале статьи.

Еще пример. Предположим, вы хотите извлечь строку, включающую все цифры после буквы B из образца "A1234B4567" В этом случае код будет таким:

Dim reg As New RegExp

Dim strTest As String

Dim regPattern As String

Dim Matches As MatchCollection

Dim mtch As Match

Dim blnFound As Boolean

strTest = "A1234B12"

regPattern = "4B\d+$"

With reg

.Pattern = regPattern

MsgBox .Test(strTest)

Set Matches = .Execute(strTest)

For Each mtch In Matches

MsgBox mtch.Value

Next mtch

End With

Set reg = Nothing

Для пущей наглядности приведем еще один практический пример, проверяющий правильность электронного адреса. Подобная задача актуальна, например, при создании asp-страницы, которая запрашивает email посетителя и проверяет его действительность.

Dim myReg As RegExp

Set myReg = New RegExp

myReg.IgnoreCase = True

' Шаблон на проверку правильности эл.адреса

myReg.Pattern = "^[\w-\.]+@\w+\.\w+$"

If myReg.Test(Text1.Text) Then

MsgBox "Электронный адрес действителен"

Else

MsgBox "Ошибка! Электронный адрес <" & Text1.Text & "> существовать не может!"

End If

Еще пример. Расположите на форме два текстовых поля txtPatern и txtString. Установите у первого текстового поля свойство Text в^([2-9]{3}-)?[2-9]{3}-\d{5}$ и пишем код

Private Sub txtString_Change()

Dim reg_exp As New RegExp

reg_exp.Pattern = txtPattern.Text

If reg_exp.Test(txtString.Text) Then

txtString.BackColor = vbWhite

Else

txtString.BackColor = vbRed

End If

End Sub

Расшифруем запись:

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

[2-9]{3}- символы от 2 до 9 ровно три раза, следующих за -

([2-9]{3}-)? строка "[2-9]{3}-" ни разу или один раз

[2-9]{3}- снова проверка на символы от 2 до 9 ровно 3

раза, следующих за -

\d{5} любые цифры ровно 5 раз

$ конец входной строки

Если в текстовом поле будет запись тип 555-22228 или 222-347-22225, то она станет белого цвета.

Рассмотрим пример с заменой текста. Предположим, мы хотим заменять все буквы а в словах на "о":

On Error Resume Next

Dim reg_exp As New RegExp

reg_exp.Pattern = "[а]"

reg_exp.IgnoreCase = True

reg_exp.Global = True

txtString.Text = reg_exp.Replace(txtString.Text, "о")

Если вы введете слово малака, то данный код исправит слово на молоко.

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