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

标签 regex powershell ubuntu

<分区>


想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post .

关闭 6 年前

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

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

最佳答案

我只能提供文本文件的脚本。您可以使用 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

关于regex - 需要从批处理中的 epub 或文本文件中提取一组 4 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38785308/

上一篇:apache - XAMPP 问题 - 本地主机显示不需要的 "Apache2 Ubuntu Default Page"

下一篇:java - 如何接受到 Java WebServer 的远程连接

相关文章:

php - 将 Javascript 正则表达式转换为 PHP

database - Powershell:Backup-Sqldatabase 无法解析路径

string - 如何使用批处理或 PowerShell 从文本文件中删除换行符

ubuntu - Code::Blocks 16.01 文件标签消失(Ubuntu 17.04)

linux - Basic auth + suexec 以 linux 用户身份验证

javascript - 使用正则表达式检查字符串的开头和结尾是否有星号

.net - 解析 .NET 中的 VB6 代码

powershell - 创建可能部分存在于 WinSCP 409 冲突的目录结构

php - Ubuntu 14.04 服务器 : Apache2 issue with phpMyAdmin

regex - RegEx 表达式中的字符失败