从包含日期和其他字符的字符串中选择日期

时间:2018-10-30 02:39:54

标签: regex powershell datetime

我正在尝试使用Windows PowerShell在快递网站上查询带有跟踪号的运输信息。此特定的快递公司没有可用的API,因此我目前仅使用Invoke-RestMethod提取每个网页的HTML。

我正在尝试从每一页中选择取件日期。

我可以在页面上选择取件日期,但是我选择的字符串包含其他字符,例如:

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

这样做的原因是我正在使用它来获取某种形状/形式的日期:

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

这给了我某种形式的日期,但是对于每一页,日期可能在变量中的不同位置。我正在尝试将日期剥离到另一个变量,以便看起来像30/10/2018。我已经尝试过RegEx,但是运气不好,现在正在寻求帮助。

1 个答案:

答案 0 :(得分:1)

因此,我们将做一个简单的正则表达式\ d =数字,{2} =(表达式)内有多少个数字。然后,对于具有的每个匹配,获取值并通过解析将日期解析为datetime(如果解析失败)来验证其是否为真实日期,那么我们就知道它不是日期,格式为DayDay/MonthMonth/YearYearYearYear,也就是{{1} }如果没有失败,则输出正则表达式匹配的值。

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{} }