Поиск текста между двумя строками

Я пытаюсь получить что-то между двумя строками в исходном коде электронной почты 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>. но это не работает. я думаю, что новая строка и пустые символы вызывают проблемы.

Не лучше ли использовать для этого селектор xpath?

Lucas Wieloch 13.09.2018 18:20

Попробуйте color:#636363; text-decoration:none;">([\s\S]*?)</td>, чтобы избавиться от проблем с новой строкой

Rubens Farias 13.09.2018 18:23

Используйте HtmlAgilityPack. Вы не можете анализировать HTML с помощью Regex

maccettura 13.09.2018 18:32

@RubensFarias, похоже, работает, но есть "ошибка шаблона imgur.com/a/jCScNpF

Rana Jawad 13.09.2018 18:45

Вы можете заставить . соответствовать символам новой строки с RegexOptions.Singleline - (?s)color:#636363; text-decoration:none;">(.*?)</td>, но вам следует анализировать HTML с помощью специального парсера.

Wiktor Stribiżew 13.09.2018 18:47

Вот и старый способ кодирования 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());

T.S. 13.09.2018 18:56
1
7
75
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте образец ниже

<td[^>]*>(.*?)</td>

Он проигнорирует все атрибуты.

его нельзя использовать, потому что есть и другие теги td, и он захватывает весь текст от <td до </td>. проверено на regex101

Rana Jawad 13.09.2018 18:37

Я думаю, это то, что вы упомянули в своем вопросе. Лучше, если вы можете поделиться своим полным html, а затем указать, какую часть вы хотите получить.

Arun Kumar 13.09.2018 18:41

@ArunKumar, это не имеет значения, Regex - это не то, что вы должны использовать для синтаксического анализа HTML. Не поощряйте это

maccettura 13.09.2018 18:42

@maccettura Полностью согласен. Лучше использовать HtmlAgilityPack.

Arun Kumar 13.09.2018 18:43
Ответ принят как подходящий

Ладно, так ты хочешь этого? Вы не экранировали / в </td>, и вам нужно было добавить символы новой строки. Это должно тебе помочь

color:#636363; text-decoration:none;\">[\r\n]+(.*?)[\r\n]+<\/td>

это просто часть кода, в коде есть и другие даты. мне нужна эта конкретная дата

Rana Jawad 13.09.2018 18:40

@RanaJawad Тогда я обновил для вас свой ответ.

Ajaypayne 13.09.2018 18:45

Взгляните на этот imgur.com/a/mYeXTWA

Rana Jawad 13.09.2018 18:47

@RanaJawad Простое исправление, просто избегайте этого. Обновлено.regex101.com/r/tsdJVa/2

Ajaypayne 13.09.2018 18:49

это сработало просто идеально: цвет # 636363; текст-украшение: none; \ "> [\ r \ n] + (. *?) [\ r \ n] + </td>

Rana Jawad 13.09.2018 19:44

Другие вопросы по теме