【问题标题】:How to extract a list of numbers using Powershell Regex?如何使用 Powershell Regex 提取数字列表?
【发布时间】:2013-12-11 13:08:09
【问题描述】:

我的问题类似于下面的问题,但我猜想更复杂。

How to extract the number in the string “Task(12345)” with Regular Expression and Powershell?

我需要从中提取数字的文本如下所示:

************************
 multi-line bulk texts 
************************
Change 11111 on 2013/12/09 by someone
************************
 multi-line bulk texts 
************************
Change 22222 on 2013/12/09 by someone
************************
 multi-line bulk texts 
************************
Change 33333 on 2013/12/09 by someone
************************
 multi-line bulk texts 
************************
Change 33333 on 2013/12/09 by someone
************************
 multi-line bulk texts 
************************
...[etc. same pattern]

批量文本可以包含任何字符,但我对此不感兴趣。我需要提取的是更改编号(11111、22222、...)并将它们存储在变量中或输出到文本文件中。

有人可以指导我吗?我已经测试了一堆正则表达式,但还没有运气:(

谢谢,

【问题讨论】:

  • 正则表达式很简单:'(?

标签: regex powershell


【解决方案1】:

除非文件很大,否则您可以使用链式 -match -replace 操作一次完成整个文件:

$regex = '^Change\s(\d+)\son.+'
(get-content file.txt -r 0) -match $regex -replace $regex,'$1'

【讨论】:

  • 像魔术一样工作,我从你的代码中学到了很多东西!谢谢,
【解决方案2】:

我不熟悉 .net 或 powershell,但你可以使用这个正则表达式:

(\d)\1+

或者如果数字总是这个长度

(\d)\1{4}

查看此站点以了解此特定表达式的解释。 http://regex101.com/r/gN9vM4 对于尝试新事物也很有用

【讨论】:

  • 感谢在线正则表达式提取器
【解决方案3】:

这样做的方法很多...我建议如下:

\d+(?=.*\d{4}(?:\/\d{2})*\sby\s\w+)

在比赛结束后检查“2013/12/09 by someone”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多