C#正则表达式性能优化:[0-9] vs. \d,轻松提升匹配效率 ...

打印 上一主题 下一主题

主题 844|帖子 844|积分 2532

 
概述:在C#中,正则表达式`\d`相对于`[0-9]`可能效率稍低,因为`\d`包含更广泛的Unicode数字字符。为提高性能,可使用`[0-9]`并结合编译优化。以下示例演示性能测试及优化,适用于提高正则表达式匹配效率的场景。
在C#中,正则表达式\d涵盖更广泛的 Unicode 数字字符范围,而[0-9]明白指定了 ASCII 数字字符范围,因此\d可能略显低效。为提高性能,可使用[0-9]并结合一些优化技巧。
以下是具体的示例源代码:
  1. using System;
  2. using System.Diagnostics;
  3. using System.Text.RegularExpressions;
  4. class Program
  5. {
  6.     static void Main()
  7.     {
  8.         // 测试性能:使用 \d
  9.         TestPerformance("\\d");
  10.         // 测试性能:使用 [0-9]
  11.         TestPerformance("[0-9]");
  12.     }
  13.     static void TestPerformance(string pattern)
  14.     {
  15.         // 重复匹配次数
  16.         int repeatCount = 1000000;
  17.         // 要匹配的字符串
  18.         string input = "1234567890";
  19.         // 创建正则表达式对象,启用编译优化
  20.         Regex regex = new Regex(pattern, RegexOptions.Compiled);
  21.         // 计时开始
  22.         Stopwatch stopwatch = Stopwatch.StartNew();
  23.         // 执行多次匹配
  24.         for (int i = 0; i < repeatCount; i++)
  25.         {
  26.             regex.IsMatch(input);
  27.         }
  28.         // 计时结束
  29.         stopwatch.Stop();
  30.         // 输出结果
  31.         Console.WriteLine($"使用正则表达式 {pattern} 进行 {repeatCount} 次匹配的耗时:{stopwatch.ElapsedMilliseconds} 毫秒");
  32.     }
  33. }
复制代码
看运行结果:
 
这个示例中,我们在TestPerformance方法中,使用RegexOptions.Compiled启用正则表达式的编译优化,以提高性能。同时,我们测试了使用\d和[0-9]两种正则表达式的性能。
在实际应用中,除了使用[0-9]和编译优化外,还可以根据具体需求思量其他优化策略,如避免过分使用正则表达式、使用非贪婪匹配等。性能优化需根据具体情况进行,适度而行。
代码:https://pan.baidu.com/s/1DT_l5r57RaHOzTDmWzsCkg?pwd=6666 
 
 



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表