我试图从文本文件中取出日期.这是内容:
Storage Manager命令行管理界面 - 版本7,版本1,级别1.4(c)版权所有,公司和其他(1990),2015.保留所有权利.
与服务器TSERVER建立的会话:Windows Server版本7,版本1,级别5.200服务器日期/时间:11/22/2016 15:30:00最后访问:11/22/2016 15:25:00
ANS8000I服务器命令.
我需要在服务器日期/时间之后提取日期/时间.我写了这个正则表达式:
/([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2})/
Run Code Online (Sandbox Code Playgroud)
这在regex101中完美运行.请参阅https://regex101.com/r/MB7yB4/1上的示例 但是,在Powershell中它的反应不同.
$var -match "([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2})"
Run Code Online (Sandbox Code Playgroud)
给
服务器日期/时间:11/22/2016 16:30:00最后访问:2016年11月22日15:37:19
和
$var -match "([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2})"
Run Code Online (Sandbox Code Playgroud)
什么都没有.
我不确定为什么比赛不一样.
谢谢你的帮助!
该-match运算符返回一个布尔值,显示是否找到匹配项。此外,它还$matches使用匹配数据(整个匹配和捕获组值)设置变量。您只需要访问整场比赛:
if($var -match '[0-9]{1,2}/[0-9]{1,2}/[0-9]{4} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}') { $matches[0] }
Run Code Online (Sandbox Code Playgroud)
请参阅在 PowerShell 中使用-match和$matches变量。
请注意,Powershell 正则表达式中不需要转义符号,因为该字符并不特殊,并且在 Powershell 中定义正则表达式时不使用正则/表达式分隔符(JS、PHP 正则表达式中的外部分隔符)。/.../