我昨天做了评论,其中有人曾用一个答案[0123456789]的正则表达式,而不是[0-9]或\d。我说过使用范围或数字说明符可能比使用字符集更有效。 我决定今天进行测试,令我惊讶的是(至少在C#regex引擎中)\d似乎效率比其他两个似乎相差不大的效率低。这是我的测试输出,超过10000个随机字符串,包含1000个随机字符,其中5077个实际上包含一个数字: Regular expression \d took 00:00:00.2141226 result: 5077/10000 Regular expression [0-9] took 00:00:00.1357972 result: 5077/10000 63.42 % of first Regular expression [0123456789] took 00:00:00.1388997 result: 5077/10000 64.87 % of first 令我惊讶的有两个原因: 我以为该范围将比集合有效得多。 我不明白为什么\d会比差[0-9]。有没有更多的\d不是简单的简写[0-9]? 这是测试代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Text.RegularExpressions; namespace SO_RegexPerformance { …