我需要優化下面的reg exp,以便它執行得更快。誰能幫忙?Reg Exp優化
([\d\w]{15}[\x01]\d{12}[\x01]\d{2}(.){6}((13((0[0-9]|([1-4][0-9])|5[0-9]))|14((0[0-9]|([1-2][0-9])|30)))[0-5][0-9])801(?:.*))
感謝
我需要優化下面的reg exp,以便它執行得更快。誰能幫忙?Reg Exp優化
([\d\w]{15}[\x01]\d{12}[\x01]\d{2}(.){6}((13((0[0-9]|([1-4][0-9])|5[0-9]))|14((0[0-9]|([1-2][0-9])|30)))[0-5][0-9])801(?:.*))
感謝
不知道你想要什麼你的正則表達式來做到這一點很難優化它,但你可以嘗試通過RegexOptions.Compiled的正則表達式構造。構建正則表達式對象需要更長的時間,但這意味着它會更快地執行搜索。
'RegexOptions.Compiled'不是萬能的。取決於如何使用正則表達式,這可能會使性能變得更糟。 – 2011-05-17 21:46:38
這是一個優化的版本:除去大量的冗餘字符類和基團。最終,知道正則表達式應該做什麼會更好。
\w{15}\x01\d{12}\x01\d{2}.{6}(13[0-5]\d|14([0-2]\d|30))[0-5]\d801.*
編輯:根據你的新的信息,您可以進一步降低它歸結爲:
\w{15}\x01\d{12}\x01\d{2}.{6}(13[0-5]\d|1400)[0-5]\d801.*
的REG EXP搜索文本文件中誰具有以下格式和值的記錄:
記錄應與15個數字或文字,後面緊跟着12位和[\x01]
又一個特殊字符[\x01]
,其次是2個位數任何6個字符開始,然後查找值(日期值格式小時分秒無覆蓋ut分隔文件中的小時和分鐘和秒)的任何:
或.
)在130000和140059之間(這是下面提取的reg exp I的部分),最後是值801和可能隨後的任意數量的字符。
((13((0[0-9]|([1-4][0-9])|5[0-9]))|14((0[0-9]|([1-2][0-9])|30)))[0-5][0-9])
希望我在這裏已經很清楚,可以理解。
而且我在REG exp的開始和$爲最終加了^。
我用RegexOptions.Compiled選項,以及,但沒有太大的起色。對於所有的提示
謝謝,我會嘗試出來。與此同時,如果您有任何更多優化建議,非常歡迎。
對不起,我的部分有錯誤 時間部分在130000和143059之間 我會試試你的解決方案,bluepnume。
如果您發佈了它應該做的事情,這將有所幫助。 – Mr47 2011-05-17 13:30:59
也許你應該發佈一些你正在使用的代碼。 – jjnguy 2011-05-17 13:35:49
我認爲從優化正則表達式得到的任何速度都是最小的,如果有的話。你確定你的正則表達式有一個瓶頸嗎? – Dve 2011-05-17 13:47:51