d
vs. [0-9]
- 一個令人驚訝的比較>最近的討論引發了關於d
的初步測試更快,但是進一步的研究表明,一個更細微的現實:[0-9]
>在特定情況下d
> d
的效率較小。本文探討了這種差異背後的原因。 >
鍵差在於字符設置每個表達式匹配。
所有[0-9]
unicode數字,包括來自各種非拉丁腳本的數字(例如,波斯語,devanagari)。
d
這個擴展的匹配範圍可能會影響性能。 正則發動機必須評估更大的字符集,並可能增加處理時間。 雖然在許多情況下,差異可能可以忽略不計,但在處理大型數據集或複雜的正則表達方式時,影響會變得更加明顯。 >
匹配的廣泛字符集:d
此代碼通過所有Unicode代碼點進行迭代,並僅將d
分類為數字的人添加,從而有效地反映了
<code class="language-csharp">var sb = new StringBuilder(); for (UInt16 i = 0; i < 0x10FFFF; i++) { if (char.IsDigit((char)i)) { sb.Append((char)i); } } Console.WriteLine(sb.ToString());</code>
char.IsDigit()
匹配的十位數字相比,突出了明顯更大的字符集。
d
>因此,[0-9]
>提供更廣泛的兼容性,但
可能是更有效的選擇。
以上是\ d' \ d”效率不如REGEX中的[0-9]`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!