如何使用正则表达式选择字符串的一部分并将其放入 Powershell 中的变量

问题描述

我想制作一个脚本来从文件名中提取日期,该文件名只在日期中使用数字而不是单词本身

我在想

$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]
}