d在正則表達式中的效率不如[0-9]
最近的討論中,有人質疑在正則表達式中使用[0123456789]
而不是[0-9]
或d
的效率。出乎意料的是,在C#正則表達式引擎中的測試表明,d
的效率低於其他兩個選項。
效率低下的可能原因
d
包含所有Unicode數字,而不僅僅是常見的0-9。因此,解析非標準數字可能會減慢正則表達式引擎的速度。 d
包含[0-9]
之外的附加功能,可能需要更複雜的處理。這些額外功能會影響效率。 測試結果
為了證明這個問題,進行了以下測試:
d
、[0-9]
、[0123456789]
)處理字符串所花費的時間:正則表達式 | 時間 | 相對d的時間百分比 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
00:00:00.2141226 | 100% | ||||||||||||
00:00:00.1357972 | 63.42% | |||||||||||||
[0-9] |
00:00:00.1388997 | 64.87% |
[0123456789]
結果表明,d
和在效率方面都明顯優於。
結論d
[0-9]
雖然[0123456789]
可以提供更廣泛的數字匹配功能,但在性能方面有所犧牲。對於性能關鍵型應用程序,建議使用更簡潔的
以上是\ d的效率比[0-9]或[0123456789]在Regex中的效率低?的詳細內容。更多資訊請關注PHP中文網其他相關文章!