我很努力地理解PowerShell中的正則表達式。上週五用戶麥克-Z幫了我一個腳本的命名約定這樣來提取一組文件夾的數量 -powershell正則表達式捕獲拉動版本號
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正則表達式非常困惑。
只需在演示站點中刪除正則表達式中的最後一個'。*'。你應該看到不同之處。 – 2014-09-02 14:33:04
太棒了,這不僅工作完美,但你已經設法幫助我理解爲什麼我試圖無論如何。 – 2014-09-02 15:16:19
因爲'另外,如果你可以解釋爲什麼正則表達式的工作原因,我會非常感激,因爲在這一點上我被PS正則表達式困惑了。'請求解釋是很好的。 – 2014-09-02 15:20:42