如何使用正则表达式 select 字符串的一部分并将其放入 Powershell 中的变量中
How do I select a portion of a string using regex and put it in a variable in 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]
}
我想制作一个脚本来从文件名中获取日期,该文件名只在日期中使用数字而不是单词本身
我在想
$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]
}