Avatar ·

为什么 C# 中的 \d 比 [0-9] 慢,以及如何修复?

大家好!我正在用 C# 编写一个使用正则表达式的日志解析器。我注意到一个奇怪的行为:当我使用 \d 查找数字时,性能比使用 [0-9] 慢了几倍。 以下是我测试的示例代码: ```csharp using System; using System.Diagnostics; using System.Text.RegularExpressions; class Program { static void Main() { string input = string.Concat(Enumerable.Repeat("1234567890", 100000)); var sw = Stopwatch.StartNew(); for (int i = 0; i < 1000; i++) { Regex.Match(input, @"\d+"); } sw.Stop(); Console.WriteLine($"\\d: {sw.ElapsedMilliseconds} ms"); sw.Restart(); for (int i = 0; i < 1000; i++) { Regex.Match(input, @"[0-9]+"); } sw.Stop(); Console.WriteLine($"[0-9]: {sw.ElapsedMilliseconds} ms"); } } ``` 结果让我惊讶:\d 运行