|
|||||||
примеры выражений
Время создания: 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 имело такой вид: 4. А вот вариант для проверки адреса. В исходной строке допустимы лишь буквы латиницы, кириллицы и знаки препинания: @"^[a-zA-Zа-яА-Я,-;:]+$"
или
@"[a-zA-Zа-яА-Я,-;:]{5,50}" В последнем варианте требуется ввести минимум 5 и максимум 50 знаков. 5. Удаление чисел (цифр) из текста string newStr = Regex.Replace("Обычна 12 строка с 75 числами", @"\D", string.Empty); Получим строку "Обычная строка с числами" |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|