MyTetra Share
Делитесь знаниями!
примеры выражений
Время создания: 18.09.2019 22:26
Текстовые метки: regex, примеры регулярных выражений
Раздел: Компьютер - C# - REGEX
Запись: Kozlov-AE/Tetra/master/base/1568834812zelerq873g/text.html на raw.githubusercontent.com

Примеры регулярных выражений на c# (класс RegularExpressions.Regex)


Сейчас я и хочу просто поделиться несколькими наиболее часто применяемыми конструкциями.

Кстати, появилось еще несколько примерчиков: Регулярные выражения в c#

1. Проверка e-mail:

String e_mail = "name@gmail.";  

  

public bool isValidMail(string e_mail)  

{  

   string expr =   

     "[.\\-_a-z0-9]+@([a-z0-9][\\-a-z0-9]+\\.)+[a-z]{2,6}";  

      

   Match isMatch =   

     Regex.Match(e_mail, expr, RegexOptions.IgnoreCase);  

      

   return isMatch.Success;  

}  

Данный метод принимает входной e-mail и выдает true/false в зависимости от того, валидное ли имя адреса электронной почты. В данном случае метод вернет false поскольку в адресе электронной почты не указан домен первого уровня.

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

string str =   

   @"Обычная (случайная) строка   

     (последовательность символов).   

     И еще просто набор цифр - (как число)";  


public List<string> GetWithIn(string str)  

{   

    List<string> rez = new List<string>();  

    Regex pattern =   

        new Regex(@"\((?<val>.*?)\)",   

            RegexOptions.Compiled |   

            RegexOptions.Singleline);  

    foreach(Match m in pattern.Matches(str))   

    if(m.Success)    

       //меж скобок ( )  

       rez.Add(m.Groups["val"].Value);  

    return rez;  

}  

Метод GetWithIn получает входную строку и с помощью так называемых групп находит все вхождения между парами круглых скобок «(...)». Того же результата можно добиться и без применения группировок:

public List<string> GetWithIn(string str)  

{     

    List<string> rez = new List<string>();  

  

    Regex pattern = new Regex(@"(?<=\().*?(?=\))");  

    foreach (Match m in pattern.Matches(str))  

        if(m.Success)  

            //меж скобок ( )  

            rez.Add(m.Groups["val"].Value);  

  

    return rez;  

}  

3. Получить тег <img src="..." /> и заменить его содержимое

Пришлось как то реализовать полуавтоматическое добавление статей на сайте. Схема заключалась в автоматическом поиске исходного html-текста статьи всех вхождений тега <img>. Для каждого из них необходимо было изменить путь и имя графического файла в атрибуте src.

String GetReplacedText(string text)  

{  

   //ищем значение для тега src  

   Regex re = new Regex(  

      @"(?<=<img .*?src\s*=\s*"")[^""]+(?="".*?>)");  

      //или   

      //@"\< *[img][^\>]*[src] *= *[\"\']{0,1}([^\"\'\ >]*)"  

  

   //получаем набор значений для аттрибута src       

   MatchCollection mc = re.Matches(text);  

          

   List<string> al = new List<string>();  

   foreach (Match m in mc)//пробегаем по набору аттрибутов src  

       //выделяем только расширение файла  

       al.Add(System.IO.Path.GetExtension(m.Value));  

  

   int k = 0;  

     

   string replacedText = re.Replace(text, delegate(Match m)   

            { return "Images/"+(++k).ToString()+al[k-1]; } );  

      

    return replacedText;  

}  

Если в тексте вхождение тега img имело такой вид:

<img src="d:/someImage.gif" /> и <img src="c:/MyFolder/anotherImageFile.png" alt="Just Alt Text" />,

то после замены мы получим следующее:

<img src=<Images/1.gif< /> и <img src=<Images/2.png< alt=<Just Alt Text< />,

сохранив расширения файлов, но заменив их новым адресом и именем файла.

4. А вот вариант для проверки адреса.

В исходной строке допустимы лишь буквы латиницы, кириллицы и знаки препинания:

@"^[a-zA-Zа-яА-Я,-;:]+$"   

  

или   

  

@"[a-zA-Zа-яА-Я,-;:]{5,50}"  

В последнем варианте требуется ввести минимум 5 и максимум 50 знаков.

5. Удаление чисел (цифр) из текста

string newStr =   

   Regex.Replace("Обычна 12 строка с 75 числами",  

                 @"\D", string.Empty);  


Получим строку "Обычная строка с числами"

Так же в этом разделе:
 
MyTetra Share v.0.55
Яндекс индекс цитирования