Я пытаюсь получить что-то между двумя строками в исходном коде электронной почты HTML. Я использую C#. Часть html:
<td width = "200" align = "right" valign = "top" style = "line-height:22px; font-size:20px; font-family: Arial, sans-serif; color:#636363; text-decoration:none;">
9/7/2018
</td>
мне нужна дата 9/7/2018. я пробовал регулярное выражение,
color:#636363; text-decoration:none;">(.*?)</td>
Это должно захватить строку между color:#636363; text-decoration:none;">
и </td>
. но это не работает. я думаю, что новая строка и пустые символы вызывают проблемы.
Попробуйте color:#636363; text-decoration:none;">([\s\S]*?)</td>
, чтобы избавиться от проблем с новой строкой
Используйте HtmlAgilityPack. Вы не можете анализировать HTML с помощью Regex
@RubensFarias, похоже, работает, но есть "ошибка шаблона imgur.com/a/jCScNpF
Вы можете заставить .
соответствовать символам новой строки с RegexOptions.Singleline
- (?s)color:#636363; text-decoration:none;">(.*?)</td>
, но вам следует анализировать HTML с помощью специального парсера.
Вот и старый способ кодирования var lPos = myString.IndexOf("</td>", 0); int fPos = 0; if (lPos > -1) fPos = myString.LastIndexOf('>', lPos); var result = myString.Substring(fPos + 1, lPos - 1 - fPos); Console.WriteLine(result.Trim());
Попробуйте образец ниже
<td[^>]*>(.*?)</td>
Он проигнорирует все атрибуты.
его нельзя использовать, потому что есть и другие теги td, и он захватывает весь текст от <td до </td>. проверено на regex101
Я думаю, это то, что вы упомянули в своем вопросе. Лучше, если вы можете поделиться своим полным html, а затем указать, какую часть вы хотите получить.
@ArunKumar, это не имеет значения, Regex - это не то, что вы должны использовать для синтаксического анализа HTML. Не поощряйте это
@maccettura Полностью согласен. Лучше использовать HtmlAgilityPack.
Ладно, так ты хочешь этого?
Вы не экранировали / в </td>
, и вам нужно было добавить символы новой строки.
Это должно тебе помочь
color:#636363; text-decoration:none;\">[\r\n]+(.*?)[\r\n]+</td>
это просто часть кода, в коде есть и другие даты. мне нужна эта конкретная дата
@RanaJawad Тогда я обновил для вас свой ответ.
Взгляните на этот imgur.com/a/mYeXTWA
@RanaJawad Простое исправление, просто избегайте этого. Обновлено.regex101.com/r/tsdJVa/2
это сработало просто идеально: цвет # 636363; текст-украшение: none; \ "> [\ r \ n] + (. *?) [\ r \ n] + </td>
Не лучше ли использовать для этого селектор xpath?