我正在尝试使用Windows PowerShell在快递网站上查询带有跟踪号的运输信息。此特定的快递公司没有可用的API,因此我目前仅使用Invoke-RestMethod提取每个网页的HTML。
我正在尝试从每一页中选择取件日期。
我可以在页面上选择取件日期,但是我选择的字符串包含其他字符,例如:
30/10/2018</td>
<td><span
这样做的原因是我正在使用它来获取某种形状/形式的日期:
$pickupdatemessy = $httpresponse.Substring(25448,30)
这给了我某种形式的日期,但是对于每一页,日期可能在变量中的不同位置。我正在尝试将日期剥离到另一个变量,以便看起来像30/10/2018。我已经尝试过RegEx,但是运气不好,现在正在寻求帮助。
答案 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{}
}