2012-10-17 32 views
0

執行以下命令後,我的powershell掛在97%的CPU上並完全凍結。 我能夠始終如一地重現此行爲。任何想法,如果它是一個錯誤,或者我做了一些禁忌?崩潰powershell和固定正則表達式我的CPU - 如何/爲什麼?

$anew -match '((.*)+([v]\d{1}\.\d{1}\..*)$)' 

$重新長的大約35行的陣列,其從服務器保存配置轉儲。它看起來類似於這樣:

目錄:\ aaa.net \建立\ directedbuilds \ BBBB \ CCC \ DDDD \ EEE

模式LastWriteTime長度名稱 ---- --------- ---- ------ ---- d ---- 10/15/2012 6:12 PM v2.1.0.69 環境:AB-34 Servers_in_Environment:SERVER01; SERVER02 NgatRootFolder:E :\ DIRNAME PFXfilename:star.dom.net.pfx etc ...

回答

2

您的模式以(.*)+開頭,這很可能由於回溯導致O(n )的表現。你應該使用(^(.*)([v]\d{1}\.\d{1}\..*)$)(沒有額外的+,並錨定),以避免非常緩慢的回溯評估問題。

+0

你能回答這個問題:如何使用正則表達式只選擇字符串的後面部分:從v2.1.0.79更新到v2.1.0.70(我使用以下正則表達式保持整行'([v] \ d {1} \ .. {1,10})$'謝謝 –

相關問題