Регулярное выражение работает только для строки с дословными литералами - C#
Формулировка задачи:
Я очень мало знаком с регулярными выражениями. Подозреваю, что не вижу чего то очевидного.
Вот код примера:
Результат ожидаем:
Если же убрать символ @:
то Regex.Matches ничего не вернет.
Т.е. получается, что текст с кодами переноса строк и возврата каретки искаться не будет, а текст без этих кодов ищется нормально. Собственно почему так и как сделать так, чтобы регулярное выражение корректно срабатывало на строке без @ или экранирования спецсимволов.
P.S.: я не занимаюсь парсингом HTML! Просто пытаюсь понять почему так происходит в таком простом случае.
class Program { static void Main(string[] args) { string msg = @"<tr>\r\n<f>v</f>\r\n</tr><tr>\r\n<f>v</f>\r\n</tr>"; ConvertToFormattedMessages(msg, "tr"); Console.ReadKey(); } public static void ConvertToFormattedMessages(string msg, string separator) { string pattern = string.Format("<{0}>(.*?)</{0}>", separator); MatchCollection matches = Regex.Matches(msg, pattern); foreach (Match match in matches) { Console.WriteLine(match.ToString()); } } }
{<tr>\r\n<f>v</f>\r\n</tr>}
{<tr>\r\n<f>v</f>\r\n</tr>}
string msg = "<tr>\r\n<f>v</f>\r\n</tr><tr>\r\n<f>v</f>\r\n</tr>";
Решение задачи: «Регулярное выражение работает только для строки с дословными литералами»
textual
Листинг программы
MatchCollection matches = Regex.Matches(msg, pattern, RegexOptions.Singleline);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д