Регулярные выражения с переменным паттерном - C#
Формулировка задачи:
Мне нужно отправлять личные сообщения людям из небольшого списка на одном форуме. За один раз можно отправлять сообщения пяти пользователям. Но, у некоторых из них приём сообщений отключён, у некоторых ящик заполнен. Если сообщение не удаётся отправить - сайт выводит приблизительно такой блок с ошибкой:
Текст сообщения об ошибке - может быть разным. Мне нужно знать есть ли на странице page сообщение об ошибке, и если есть - то вытянуть оттуда username, на которое ругается сайт.
Мне известны пять вариантов username: username1, username2, username3, username4, username5.
Если ошибка и будет - то в <ul class="blockrow error"></ul> будет одно из этих пяти имён.
Вообще в тупике. Тут и многострочность, и один из нескольких вариантов.
Помогите, пожалуйста, составить регулярное выражение, для решения этой ситуации. А может можно обойтись без них?
<div class="blockbody errorblock"> <h3 class="blocksubhead">При размещении сообщения были допущены следующие ошибки:</h3> <ul class="blockrow error"> <li>Вы не можете отправить сообщение username, поскольку он(а) решил(а) не принимать личные сообщения, либо ему(ей) не разрешена эта опция.</li> </ul> </div>
Решение задачи: «Регулярные выражения с переменным паттерном»
textual
Листинг программы
string GetErrorUserName(string html) { string[] users = {"vasya", "vasya13",...} // список пользователей Regex regex = new Regex(@"<ul class=""blockrow error\"">.+</ul>", RegexOptions.Singleline); string result = regex.Match(html); //Получили ошибку if (!result.Success) return null; string value = regex.Value; foreach(string user in users) if (value.Contains(user)) return user; return "Unknown user"; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д