我已经解析了文本文件:
$Sel = select-string -pattern "Date=*" -path D:\test_file.txt -List
以下是结果:
D:\test_file.txt:3: <aaa="000000" Date="2016-12-05"> <bbbbb="cccc" dddd="20161209" eeee="2016-12-09" fff="ggggg" hhhh="hhh" aaaa="1" bbbb="100" cccc="100">
我试图在其上运行正则表达式
$regex = "(19|20)[0-9]{2}[- -.](0[1-9]|1[012])[- -.](0[1-9]|[12][0-9]|3[01])"
再次将其解析为
select-string -pattern $regex -InputObject $Sel
但这不起作用。您是否有任何想法如何在上面的字符串中找到日期?
答案 0 :(得分:1)
如果日期模式始终采用指定的格式Date="yyyy-MM-dd"
,则最直接的方法是查找该模式。无需担心1900年和2000年。像这样,
# Test data
$sel = 'D:\test_file.txt:3:< aaa="000000" Date="2016-12-05" >'
# Let's match date that starts with Date= literal
[regex]$rex = 'Date="(\d{4}-\d{2}-\d{2})"'
# Print the result if matched
if($rex.Match($sel).groups.count -eq 2) {
$rex.Match($sel).groups[1].value
}
答案 1 :(得分:0)
这应该是正确的:
{{1}}