![]() |
Регулярные выражения – это один из способов поиска подстрок (соответствий) в строках. Осуществляется это с помощью просмотра строки в поисках некоторого шаблона.
Для того чтобы использовать Regex в своих программах необходимо в список используемых пространств имен добавить: using System.Text.RegularExpressions; Далее, в коде самой программы необходимо создать экземпляр Regex: Regex newReg = new Regex(pattern,options); Все найденные соответствия в тексте помещаются в тип MatchCollection MatchCollection matches; И далее в этот объект поместить текст, в котором необходимо произвести поиск: matches = optionRegex.Matches(text); В результате в matches появляются все результаты парсинга. Мы можем посмотреть сколько их (matches.Count), можем узнать значение конкретного элемента (matches[N].Value) pattern – образец или условие для поиска, например, если необходимо найти слово“не” в строке “не может быть”, то pattern для поискабудет выглядеть так: @"не". В простейшем случае, можно обойтись без условия поиска, тогда найдено будет значение точно повторяющее pattern. Можно получить как значение найденного совпадения так и их количество, как видно из примера ниже. Код C# Код: Код:
string pattern = @"не";RegexOptions option = RegexOptions.; Ниже приведены условия поиска. IgnoreCase*– находит совпадения независимо от регистра, т.е. прописными или строчными буквами в строке написано слово. IgnorePatternWhitespace– устраняет из шаблона неизбежные пробелы и включает комментарии помеченные «#». Compiled– указывает что регулярное выражение скомпилировано в сборку. Это порождает более быстрое исполнение но увеличивает время запуска. CultureInvariant– указывает игнорирование региональных языковых различий. ExplicitCapture– указывает что единственные допустимые записи являются явно поименованными или пронумерованными группами в форме(?…) Multiline– Многострочный режим. Изменяет значения символов “^” и“$” так что они совпадают соответственно в начале и конце каждой строки, а не только в начале и конце целой строки. RightToLeft– указывает что поиск будет выполнен справа на лево, а не слева на право. Singleline– однострочный режим. None– указывает на отсутствие заданных параметров. Пример с условиями поиска будет выглядеть так: Код C# Код: Код:
string pattern = @"не";Используя специальные символы можно создавать более сложные шаблоны для поиска: ^*- указывает на то, что поиск должен начинаться с начала строки, например шаблон (@”^не”) найдет “не” в строке, если она начинается с него: “Не может быть совсем не может быть не”. $-указывает на то что поиск должен производиться в конце строки, шаблон (@”не$”) найдет “не” в той же самой строке, только если она заканчивается им. {n}– указывает точное число вхождений в строку, например шаблон (@"не{2}") найдет слово “нее” в строке. {n,}– указывает число вхождений не менее n, т.е. шаблон (@"не{2,}") найдет слова “нее”, “неее” и т.д. {n,m}– указывает число вхождений-n и количество символов вхождения-m, то есть шаблон (@"не{2,4}") найдет все слова где количество букв “е” больше 2, но определит только количество букв ”е” равное 4. Т.е. в слове “нееееееееее” он найдет только “нееее”. +- Соответствует 1 или более предшествующих выражений. Например, "не+" соответствует "не" и "нее", но не соответствует "н". * - Соответствует 0 или более вхождений предшествующего выражения. Например, 'не*' соответствует "н" и "нее". ?- Соответствует 0 или 1 предшествующих выражений. Например, 'бы(ло)?' соответствует "бы" в "бы" или "было". В квадратных скобках можно указать диапазон букв или цифр для поиска, например [A-Z] или [0-9] Далее приведен пример для поиска времени в формате 00:00:00 и показана некоторая оптимизация кода. Код C# Код: Код:
string s1 = "Не время для драконов 00:00:00"; |
| Время: 01:16 |