需要从批处理中的epub或文本文件中提取一组4位数字

时间:2016-08-05 09:01:32

标签: regex powershell ubuntu

我有数百个epub文件。我需要用文件名从文本中提取日期(只有1947年,1987年等) 我的意思是,输出应该是,这个文件名包含这个日期等等 例如epub01包含1995 1945 1986。             epub02包含1926 1946 1948。 如果有人能为我提供可在ubuntu终端上运行的PowerShell脚本或脚本,那就太棒了。

虽然我有epub文件,但我可以自己提取到文本文件。如果你有文本文件的脚本。

1 个答案:

答案 0 :(得分:0)

我只能提供文本文件的脚本。您可以使用Get-Content cmdlet读取它们,并使用regex来获取包含负向前瞻和负向后观的值,以确保正好有四位数字:

$content = Get-Content 'your_file' -Raw
$matches = [regex]::Matches($content, '(?<!\d)(\d{4})(?!\d)')
$matches | ForEach-Object {
    $_.Groups[1].Value
}

正则表达式解释:

(?<!\d)(\d{4})(?!\d)

Regular expression visualization