执行以下命令后,我的Powershell固定在97%的CPU上并完全冻结。 我能够始终如一地重现此行为。知道是错误还是我做过一些禁忌?
$anew -match '((.*)+([v]\d{1}\.\d{1}\..*)$)'
$ anew是一个大约35行长的数组,用于保存来自服务器的配置转储。它看起来类似于:
目录:\ aaa.net \ builds \ directedbuilds \ bbbb \ ccc \ dddd \ eee
模式LastWriteTime长度名称
---- ------------- ------ ----
d ---- 2012年10月15日下午6:12 v2.1.0.69
环境:AB-34
Servers_in_Environment:SERVER01; SERVER02
NgatRootFolder:E:\ DIRNAME
PFXfilename:star.dom.net.pfx
等等...
最佳答案
您的模式以(.*)+
开头,由于回溯,可能会导致O(n3)性能。您可能应该使用(^(.*)([v]\d{1}\.\d{1}\..*)$)
(没有多余的+,并且 anchor 定)来避免回溯评估速度很慢的问题。