问题描述
我想制作一个脚本来从文件名中提取日期,该文件名只在日期中使用数字而不是单词本身
我在想
$Date = $_.Name | sed -n "\d.+"
但是 powershell 中没有 sed
解决方法
我发现你必须反向工作,找到你的正则表达式中包含的 ISNT 并用空替换它。
"original word" -replace "regex for stuff you don't want"
所以我只想要日期,所以我说正则表达式不是“^\d”的数字,而不是“^-”的破折号。所以它用空代替了所有不是数字或破折号的东西。
$Date = $_.Name -replace "[^\d+^-]"
,
这应该有效:
$Date = [regex]::Match($_.Name,'\d.+').Value
如果您想将日期存储为 DateTime
以供进一步操作:
$Date = [datetime][regex]::Match($_.Name,'\d.+').Value
如果您想使用 -match
运算符,您可以这样做:
$Date = if($_.Name -match '\d.+')
{
$Matches[0]
}