Выберите дату из строки, содержащей дату и другие символы - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь запросить у веб-страницы курьера информацию о доставке с номером отслеживания с помощью Windows PowerShell. Для этого конкретного курьера нет API, поэтому в настоящее время я просто извлекаю HTML-код каждой отдельной веб-страницы с помощью Invoke-RestMethod.

Я пытаюсь выбрать дату получения на каждой странице.

Я могу выбрать дату получения на странице, однако выбранная строка содержит другие символы, например:

30/10/2018</td>
<td><span

Причина этого в том, что я использую это, чтобы получить дату в какой-либо форме / форме:

$pickupdatemessy = $httpresponse.Substring(25448,30)

Это дает мне дату в некоторой форме или форме, однако для каждой страницы дата может быть в другом месте в переменной. Я пытаюсь просто вырезать дату в другой переменной, чтобы она выглядела как 30/10/2018. Я экспериментировал с RegEx, но мне не повезло, и теперь я ищу помощи.

1 Ответ

0 голосов
/ 30 октября 2018

Итак, мы сделаем простое регулярное выражение \ d = цифра, {2} = Сколько цифр внутри (выражения). Затем для каждого совпадения получить значение и проверить, является ли оно реальной датой, путем синтаксического анализа даты в datetime, если синтаксический анализ не выполнен, тогда мы знаем, что это не дата в формате DayDay/MonthMonth/YearYearYearYear aka dd/MM/yyyy. значение регулярного выражения совпадает.

@"
30/10/2018</td>
<td><span
"@ | Select-String -Pattern "(\d{2})/(\d{2})/(\d{4})" -AllMatches | %{$_.Matches} | %{
    try{
        [DateTime]::ParseExact($_.value,"dd/MM/yyyy", $null)
    }catch{}
}

вывод будет: 30/10/2018

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