Извлечь текст внутри в пределах диапазона веб-страницы - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь извлечь статус доставки с веб-сайта, чтобы я мог в реальном времени отображать этот статус в asp gridview.

Я пытаюсь сделать это с помощью регулярных выражений, но при попытке установить строковое значение яУ меня проблемы.

Это необработанный формат HTML:

<span class=" palette-confirm "> Delivered </span>

(<span class=")\s+(palette-confirm)(\n|\r)(">)(\n|\r)\s+

Я пришел с вышеупомянутым в regex101, но когда я пытаюсьи используйте это в строке в Visual Studio, синтаксис неправильный.

string pattern = "(<span class=\")\s+(palette-confirm)(\n |\r)(\">)(\n|\r)\s+\";

Я не уверен, как затем извлечь последний тег, поэтому я извлекаю только текст «Доставлено».

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Сколько существует статусов?Просто сопоставьте текст фактического состояния с помощью или | .....

 \>\s*(Delivered | In\sProcess)\s*\<

Вот пример:

var pattern = @"\>\s*(Delivered | In\sProcess)\s*\<";

var str = @"<span class="" palette-confirm ""> In Process</span?";

var result = Regex.Match(str, pattern );

Console.WriteLine(result.Groups[1].Value);

Выход

In Process
0 голосов
/ 31 января 2019

В C # обратная косая черта обрабатывается как escape-символ.Чтобы сохранить обратную косую черту для регулярного выражения, вам нужно либо написать двойную обратную косую черту "()(\\n|\\r)\\s+\\", либо сказать C #, чтобы не рассматривать обратную косую черту как escape-символ, поместив символ @ перед строкой: @"()(\n|\r)\s+\".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...