HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 04.04.2017, 17:16
kick
Флудер
Регистрация: 20.01.2015
Сообщений: 7,201
С нами: 5952720

Репутация: 6527


По умолчанию

Регулярные выражения – это один из способов поиска подстрок (соответствий) в строках. Осуществляется это с помощью просмотра строки в поисках некоторого шаблона.

Для того чтобы использовать 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 = @"не";
string text = "не может быть";
Regex newReg = new Regex(pattern);
MatchCollection matches = newReg.Matches(text);
foreach(Match mat in matches)
{
    Console.WriteLine("Значение найденного обьекта {0}",mat.Value);
}
Console.WriteLine("Число найденных совпадений{0}",matches.Count);
Теперь остановимся на условиях поиска, или options. Для начала необходимо создать условие поиска:

RegexOptions option = RegexOptions.;

Ниже приведены условия поиска.

IgnoreCase*– находит совпадения независимо от регистра, т.е. прописными или строчными буквами в строке написано слово.

IgnorePatternWhitespace– устраняет из шаблона неизбежные пробелы и включает комментарии помеченные «#».

Compiled– указывает что регулярное выражение скомпилировано в сборку. Это порождает более быстрое исполнение но увеличивает время запуска.

CultureInvariant– указывает игнорирование региональных языковых различий.

ExplicitCapture– указывает что единственные допустимые записи являются явно поименованными или пронумерованными группами в форме(?…)

Multiline– Многострочный режим. Изменяет значения символов “^” и“$” так что они совпадают соответственно в начале и конце каждой строки, а не только в начале и конце целой строки.

RightToLeft– указывает что поиск будет выполнен справа на лево, а не слева на право.

Singleline– однострочный режим.

None– указывает на отсутствие заданных параметров.

Пример с условиями поиска будет выглядеть так:

Код C#

Код:


Код:
string pattern = @"не";
string text = "Не может быть совсем не может быть";
RegexOptions option=RegexOptions.IgnoreCase;
Regex newReg = new Regex(pattern,option);
MatchCollection matches = newReg.Matches(text);
foreach(Match mat in matches)
{
    Console.WriteLine("Значение найденного обьекта {0}",mat.Value);
}
Console.WriteLine(“Число найденных совпадений{0}”,matches.Count);
В этом случае будет осуществлен поиск слова “не” не зависимо от того какими буквами (прописными или строчными) оно написано. И в результате будут найдены оба слова в строке. При желании и опыте, код может быть оптимизирован.*

Используя специальные символы можно создавать более сложные шаблоны для поиска:

^*- указывает на то, что поиск должен начинаться с начала строки, например шаблон (@”^не”) найдет “не” в строке, если она начинается с него: “Не может быть совсем не может быть не”.

$-указывает на то что поиск должен производиться в конце строки, шаблон (@”не$”) найдет “не” в той же самой строке, только если она заканчивается им.

{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";
            Regex reg = new Regex(@"[0-9]+:[0-9]+:[0-9]+",RegexOptions.IgnoreCase);
            MatchCollection mc = reg.Matches(s1);
            foreach (Match mat in mc)
            {
                Console.WriteLine(mat.ToString());
            }
            Console.WriteLine(mc.Count.ToString());
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

Загрузка...
Загрузка...