|
[ Главная ] [ Статьи ] [ Для новичков ] [ Примеры ] [ Программы ] [ Microsoft Agent 2.0 ] [ Пособие ] [ Уроки ] [ Разное ] |
Регулярные выражения в VB (Visual Basic)Что такое регулярные выражения (regular expressions)? Регулярные выражения - это очень мощный механизм для обработки строк. С его помощью можно легко найти нужные части текста, проверить, удовлетворяет ли строка определённой маске, и т.д. и т.п. Такие выражения втроены во многие языки программирования, такие, как Perl, Php, JavaScript. Что необходимо следать, чтобы такие выражения использовать в VB? Для использования регулярных выражений в своих программах, необходимо подключить библиотеку Microsoft Windows Script. Такая библиотека поставляется с IE4 (и выше). Для подключения, зайдите в Project->References и поставьте флажок у VBScript Regular Expressions. Теперь к Visual Basic добавился объект RegExp, который содержит в себе все, что нужно для работы с регулярными выражениями. Как использовать объект объект RegExp? Для начала, необходимо объявить объектную переменную RegExp: Dim myRegExp As New RegExp Этот объект имеет следующие свойства и методы: Свойства: Global - если Global = True, то поиск ведётся во всей строке, если False, то только до первого совпадения. IgnoreCase - игнорировать ли регистр символов при поиске. Pattern - это свойство задаёт шаблон (маску) для поиска. MultiLine - определяет, является ли текст многострочным или нет. Методы: Test - этот метод имеет следующий синтаксис: Function Test(sourceString As String) As Boolean Метод Test позволяет протестировать строку sourceString на соответствие её шаблону (Pattern). Возвращается Boolean, True - соответсвует, False - нет. Execute - этот метод имеет следущий синтаксис: Function Execute(sourceString As String) As MatchCollection MatchCollection - это коллекция совпадений, которая содержит в себе всю информацию о всех совпадениях регулярного выражения в строке sourceString. Метод Execute может быть использован, например, для извлечения всех email адресов из строки sourceString. Replace - этот метод имеет следующий синтаксис: Function
Replace(sourceString As String, replaceVar)
_ Метод Replace даёт возможность заменить все совпадения регулярного выражения строкой replaceVar. Примеры использования регулярных выражений Dim
myRegExp As New RegExp '
создаём экземпляр RegExp'a В результате выполнения такого кода в ListBox (List1) добавятся вот такие строчки: Первая - число 6 (FirstIndex) - это номер первого совпавшего символа (т.е. симола b) Вторая строка - 46 (Length) - длина совпавшего образца. Третья строка: И последняя строка: Теперь, давайте, к примеру, изменим маску (регулярное выражение) так, чтобы из текста получить hex цвет (#XXXXXX). Маска может выглядить так: "(#[0-9A-F]{6})" Запустите и посмотрите что будет. Свойство SubMatches(0) вернёт вам строку - "#FFAABB", т.е. как раз то, что мы искали. Кстати, свойство Value вернёт вам такую же строку. Рассмотрим пример использования метода Test: Dim
myRegExp As New RegExp Здесь мы проверяем, совпала ли строка с регулярным выражением или нет. И наконец, последний пример. Давайте заменим текст, находящийся в тегах <P> на другой текст: myRegExp.Pattern
= "<P>(.*?)</P>" В данном случае в тестируемой строке будет только одна пара <P></P>. Но вы можете сами добавить ещё одну пару и проверить работоспособность кода. Синтаксис регулярных выражений Здесь я разместил очень краткое описание синтаксиса регулярных выражений, т.к. подробное описание заняло бы не один десяток страниц. На эту тему была выпущена книга "Mastering Regular Expressions". Более подробное описание вы можете найти на специализированных сайтах. (www.perl.com, к примеру). Спец. символы:
Ещё несколько примеров регулярных выражений: "(два|три) богатыря" ".+@.+\..+" - соответствует email адресу. "a(.)\1c" - соответствует одному символу a, затем любым 2-м одинаковым символам, и затем символу с. Т.е. совпадёт "axxc", то не "axyc". "(\d\d)\.\1\.\d\d\d\d" - соответствует дате, у которой число и месяц одинаковы. Т.е. дата "09.09.2001" - подойдёт, а дата "09.12.2001" - нет. Ну и т.п. |
|
|
|
>>>Если у вас есть статья которой нет на сайте
пришлите ее мне--------> Послать статью >>>Если вы хотите задать вопрос пишите--------> Мне нужна помощь |
|
|
|