d
vs. [0-9]
- 一个令人惊讶的比较>最近的讨论引发了关于d
的初步测试更快,但是进一步的研究表明,一个更细微的现实:[0-9]
>在特定情况下d
> d
的效率较小。本文探讨了这种差异背后的原因。>
键差在于字符设置每个表达式匹配。
所有[0-9]
unicode数字,包括来自各种非拉丁脚本的数字(例如,波斯语,devanagari)。
d
这个扩展的匹配范围可能会影响性能。 正则发动机必须评估更大的字符集,并可能增加处理时间。 虽然在许多情况下,差异可能可以忽略不计,但在处理大型数据集或复杂的正则表达方式时,影响会变得更加明显。>
匹配的广泛字符集:d
此代码通过所有Unicode代码点进行迭代,并仅将d
分类为数字的人添加,从而有效地反映了
var sb = new StringBuilder(); for (UInt16 i = 0; i < 0x10FFFF; i++) { if (char.IsDigit((char)i)) { sb.Append((char)i); } } Console.WriteLine(sb.ToString());
char.IsDigit()
匹配的十位数字相比,突出了明显更大的字符集。
d
>因此,[0-9]
>提供更广泛的兼容性,但
可能是更有效的选择。
以上是\ d' \ d”效率不如REGEX中的[0-9]`?的详细内容。更多信息请关注PHP中文网其他相关文章!