【发布时间】:2014-09-02 22:37:40
【问题描述】:
我很难理解 powershell 中的正则表达式。周五,用户 mike-z 帮我写了一个脚本,从一组文件夹中提取数字,命名约定如下 -
Core_1.1.2
Core_1.3.4
以下正则表达式;
-replace '.*_(\d+(\.\d+){1,3})', '$1')
完美地仅提取数字(例如“1.1.2”)。
不幸的是,我后来意识到一些文件夹名称在版本号后面有一些其他垃圾文本(例如 Core_1.2.4_Prod)。我尝试自己调整上述正则表达式以使其也忽略尾随文本,但我并没有走得太远。我使用了各种在线正则表达式生成器以及我自己有限的正则表达式经验,但我没有得到任何结果;我能够生成 应该 捕获我需要的文本的正则表达式,但它们在 powershell 中不起作用。相反,上面的工作正则表达式(就像它在 powershell 中一样)在我使用的任何正则表达式工具中都失败了。
基本上,给定一个这样的文件夹名称列表
Core_1.1.2
Core_1.2.4_Prod
Core_1.2.6
Core_1.3.1_Prod
Core_1.4.4
我只需要获取版本号。此外,如果您能解释为什么正则表达式有效,我将不胜感激,因为此时我对 PS 正则表达式感到非常困惑。
【问题讨论】:
标签: regex powershell