Регулярные выражения позволяют проверить строку на соответствие определенным условиям, например узнать, что она является номером телефона, датой или сложным паролем. Поддержка регулярных выражений реализована во многих языках программирования и VisualBasic не является исключением. Для использования регулярных выражений в VB необходимо подключить библиотеку Microsoft VBScript Regular Expressions. Для проверки строки регулярным выражением предлагается готовая функция:
Public Function ereg(ByVal Expression As String, ByVal Mask As String) As Boolean
Static soRegExp As New VBScript_RegExp_55.RegExp
'55 - версия библиотеки, если у Вас другая версия, замените это число
soRegExp.Pattern = Mask
ereg = soRegExp.Test(Expression)
End Function
Функция возвращает True, если строка Expression соответствует регулярному выражению Mask.
Регулярные выражения чувствительны к регистру символов. Простейшее регулярное выражение - это строка для поиска, не содержащая спецсимволов. Таким является ABBC, оно совпадает со всеми строками, включающими в себя ABBC. Т.е. строка AABBCDEZ совпадает с ним, а ABC и AbbC не совпадают.
Спецсимволы используются в выражениях для особых целей, например, позволяют указать, что символ может повторяться один и более раз. Основные спецсимволы: ()[]{}|?$^+*\. Чтобы спецсимвол воспринимался как обычный символ строки, его необходимо экранировать символом \, например \$ в Ma\$ter воспринимается как знак доллара.
Еще одна возможность спецсимвола экранирования \ - указание символа по шестнадцатиричному коду, например, \xFF.
* |
предыдущий символ может повторяться сколько угодно раз, в том числе ноль |
+ |
предыдущий символ повторяется один раз и больше |
? |
предыдущий символ присутствует один или ноль раз |
Т.е. выражению A?B\\B*C+Z соответствуют AB\CCZ, AQB\BCZ и AwB\BBBCZ. Спецсимволы группировки () позволяют распространить действие одного спецсимвола на несколько символов. В выражении (AB)+C действие плюса распространяется не на одну букву B, а на группу символов AB.
Спецсимволы ^ и $ соответственно означают начало и конец строки. Например, выражению ^ABBC соответствует строка ABBCD, но не XABBC. ABBC$ наоборот соответствует XABBC, но не ABBCD. Спецсимвол "." совпадает с любым символом.
Структура диапазона {min, max} задает минимальное и максимальное количества повторения символа или группы (). В случае, когда min = max, допустимо сокращение {count}. Пример регулярного выражения с использованием диапазонa: A{1,2}(BC){5}. Под него подходит строка, содержащая AABCBCBCBCBC или ABCBCBCBCBC.
Спецсимвол | означает один из вариантов, например выражению ^(A|B)$ соответствует буква A, B и больше ничего.
Спецсимволы [] позволяют использовать в выражении символьные классы. С помощью них можно задать набор допустимых символов - [AaQB], диапазон - [A-CL-Z] и комбинировать эти варианты [A-Cl-zFG]. Спецсимвол ^ в начале символьного класса делает его инвертированным, то есть символы, указанные в нем не должны встречаться. ^[^A-Za-z]$ совпадает с любой строкой, не содержащей латинских букв.
Регулярные выражения можно использовать для проверки многих форматов данных, телефоны, даты, логины пользователей и т.п. Пример регулярного выражения для номера телефона формата 123-45-67: ^[0-9]{3}(-[0-9]{2}){2}$
^ - начало строки;
[0-9]{3} - цифра от 0 до 9, которая повторяется три раза(123 в номере);
(-[0-9]{2}){2} - знак "минус", две цифры, этот фрагмент повторяется два раза(-45 и -67 в номере).
Составляйте регулярные выражения для разных форматов данных и присылайте нам по электронной почте. В следующем номере рассылки они обязательно будут опубликованы.
Существует много возможностей применения регулярных выражений. Эта статья лишь раскрывает основы этой мощной технологии.
Копирование, цитирование, хранение, перепечатка и/или публикация данной статьи разрешены только при обязательном указании прямой ссылки на сайт http://www.vbcoding.org.ua , E-Mail автора и данного предупреждения. Статья может быть исправлена и/или дополнена автором без уведомления читателей.
Автор: Влад Таранов,
Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
.
|