Регулярные выражения с переменным паттерном - 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";
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д