惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
H
Help Net Security
Jina AI
Jina AI
V
V2EX
G
Google Developers Blog
B
Blog
GbyAI
GbyAI
U
Unit 42
爱范儿
爱范儿
腾讯CDC
Engineering at Meta
Engineering at Meta
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
小众软件
小众软件
D
DataBreaches.Net
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
博客园 - 聂微东
The Cloudflare Blog
I
InfoQ
Microsoft Azure Blog
Microsoft Azure Blog
Hugging Face - Blog
Hugging Face - Blog
大猫的无限游戏
大猫的无限游戏

博客园 - 潇笑

抽筋的Delphi 可重用的定时任务实现 正则表达式性能问题 图片剪切板(文件上传)的实现 - 潇笑 - 博客园 asp.net下web控件点评 正则测试器&代码书签,更新.. (已更新!)正则测试器&代码书签,增强版 4.20更新 I-Favourite3.0提供下载 I-Favourite 截图,介绍.. I-Favourite2.0 Build (多用户多语言多种数据支持博客系统)正式版发布 角色权限,RBAC QQ机器人,博客助手开通... MSN机器人 博客助手 for I-Favourite asp.net中拍大头帖解决方案 (源码) - 潇笑 - 博客园 I-Favourite数据层,开源 I-Favourite2.0RC1 发布 I-favourite v2.0 Beta2 for sql server发布 同时支持多语言,多种数据库的多用博客提供下载 i-favourite 1.5 i-favourite 1.2正式版发布。。
发个小工具..正则表达示测试器 - 潇笑 - 博客园
潇笑 · 2007-11-10 · via 博客园 - 潇笑

最近经常用到正则,不过不同语言之间的正则一些特性差别比较大,自已写个小工具,分享下:
下载地址:http://xiaoxiao.bfor.cn/download/regex.rar
按惯例,上几张图:

最后那个,生成代码,使用RichTextBox对代码着色分二步:
关键字着色:

  

  //定义关键字
            string[] keys = new string[]{"using","return","if","else","public"};
            
foreach (string key in keys)
            {
                Regex r 
= new Regex(key);
                MatchCollection mc 
= r.Matches(rtxtCode.Text);
                
foreach (Match m in mc)
                {
                    
if (m.Success)//当匹配成功,对关键字着色
                    {   
                        rtxtCode.Select(m.Index, m.Length);
                        rtxtCode.SelectionColor 
= Color.Blue;
                    }
                }
            }


            

字符串着色这个要单独来:

Regex r1 = new Regex("\"(?<string>[^\"]*)\"");
            MatchCollection mc1 = r1.Matches(rtxtCode.Text);
            
foreach (Match m in mc1)
            {
                
if (m.Success)
                {
                    Group g 
= m.Groups["string"];
                    
if (g.Success)
                    {
                        rtxtCode.Select(g.Index
-1, g.Length+2);
                        rtxtCode.SelectionColor 
= Color.Red;
                    }
                }
            }

方法是查找字符串索引,右边去掉一个字符,右边加2,当然复杂的就不适用了,需要用环视判断字符边界,另外还要区分字符串中的转义符..