分享

【正则表达式30分钟入门】

 9loong 2008-08-02
 
第1个,Regex Match Tracer http://www./zh/mtracer/
 
正则表达式工具 Match Tracer 是一款用来编写和测试正则表达式的工具软件。 本软件通过可视化的界面,可以协助你快速、正确地写出复杂的正则表达式。

    主要功能:

  1. 根据正则表达式语法,彩色显示表达式,使表达式便于阅读。
  2. 同步将正则表达式的组成显示在 "树结构" 和 "分组列表" 中,使正则表达式结构一目了然。
  3. 可进行 "匹配","替换","分割" 功能的正则表达式应用测试。
  4. 可进行 "忽略大小写","单行模式","多行模式","全局模式","从左向右","扩展模式" 等模式下的正则表达式测试。
  5. 可单独测试表达式中的一部分,有利于分段调试复杂的正则表达式。
  6. 可将测试好的表达式直接导出为程序语言代码,也可以直接从程序源代码的字符串中导入表达式。


第2个,REGEXBUDDY  http://www./

这是一个真正专业的REGEX生产工具,应该说,他是不错的REGEX开发工具,提供了完美的REGEX表达式生产环境 
语法高亮 
以元件的形式插入各种正则表达式元素 
支持以库的形式收集管理正则表达式 
支持测试和分隔 
支持各种预定义的各种语言中正则表达式函数的生成(很牛)

Analyze, understand and study regular expressions with RegexBuddy 

第3个,The Regulator  http:///projects/regulator/ 
这个工具是用C#做的
    The Regulator窗口主要分为六部分:Web Search、Regex Analyzer、SnippetsControl、表达式输入区、Match结果区、待解析文本区。比较重要的是Regex Analyzer、表达式输入区、Match结果区、待解析文本区。在默认情况下,Web Search区占了很大位置,可能需要调整一下。
    基本用法:在表达式输入区、待解析文本区 输入你心目中的表达式和待解析文本,然后点菜单栏中的Match,结果会显示在Match结果区。
    如果你想弄清楚一个正则表达式的意思,可以利用Regex Analyzer(在View菜单),不过该功能有时候无法解析出结果,此时可以把表达式输入区 或者 待解析文本区 中的内容稍微改一下(比如添加一个空格),或许就可以解析出正确的结果了。比如我输入 \d{2}-\d{5} ,会解析出 Any digit Exactly 2 times - Any digit Exactly 5 times    。可以帮助我们理解一个复杂的正则表达式。 
     其他有用的功能:生成代码(C# or VB.NET)、直接编译成DLL、从网站检索现成的正则表达式 (Web Search)、保存常用的表达式(SnippetsControl)等等 。
 
 
说到正则表达式,还有一个工具很有名气:Expresso http://www./。这个工具在codeproject上有详细介绍,出品时间也比The Regulator早。The Regulator的作者也受到了Expresso 的影响,才开发的The Regulator。 

第4个,Expresso http://www./dotnet/expresso.asp
     Expresso提供了一个基于.NET的正则表达式开发环境,能让你方便地学习、编写、测试、分析、调试正则表达式,它具有直观、易用的操作界面,并具有以下关键特性:

  • 提供编写、运行正则表达式的环境,并附带丰富的样本文件(适合于复杂的匹配模式)用于测试;
  • 通过Builder帮助你轻松构建表达式;
  • 提供一个强大的正则表达式分析器,能让你方便地对表达式进行分析、调试;
  • 内置丰富的表达式库,包含多种模式;
  • 全面支持.NET正则表达式功能,包括替换、分组(group)等。
最重要的一点,Expresso完全免费,你只需要给Jim发送邮件就可以获得注册码。通过和Jim以email方式交流后,得知Expresso的最新版是3.0,目前已经可以支持中文文本的导入(2.1版导入中文会出现乱码)。正则表达式在基于WEB的数据挖掘方面具有非常广泛的应用,Expresso的出现无疑让表达式的编写变得更加简单,期待Expresso的后续版本给我们带来更新、更完美的体验。
Expresso 3.0
 
 


各种工具之正则表达式语法比较
 
在各种常用的工具中,
正则表达式如此的相似却又不同。
下表列出了一些常用的正则表达式,以及其不同之处。
项目总多,遗漏必有不少,请各位看官不吝指出。
以perl的正则为基准,不同的用法以粉红色标出。


grep 2.5.1 egrep 2.5.1 sed 3.02
sed 4.07
awk 3.1.1 perl 5.8.0 vim 6.1 JavaScript ??
转义 \ \ \ \ \ \ \
行头 ^ ^ ^ ^ ^ ^ ^
行尾 $ $ $ $ $ $ $
n个 {n} {m,n} {m,} {,n} \{n\} {n} \{n\} {n}或\{n\} 仅定义 --posix 或 --re-interval有效(要表达}和{,得用\\{和\\} 没有定义--posix或--re-interval时,不能用{n}的语法, \}\{和}{同义 {n} \{n\} {n}
{0,} * * * *或\*, (要表达*,得用\\*) * * *
{1,} \+ + \+ +或\+, (要表达+, 得用\\+) + \+ +
{0,1} \? ? \? ?或\?, (要表达?, 得用\\?) ? \? ?
任意字符 . . . . 含\n. . /s修饰后则含\n . 除\n . 除\n
(pat) 匹配并获结果 \(pat\) (pat) \(pat\) (pat)或\(pat\) (要表达括号,用\\( \\) ) (pat) \(pat\) (pat)
(?:pat) 匹配但不获结果 不支持 不支持 不支持 不支持 (?:pat) 不支持 (?:pat)
(?=pat) 等于预查 不支持 不支持 不支持 不支持 (?=pat) 不支持 (?=pat)
(?!pat) 不等预查 不支持 不支持 不支持 不支持 (?!pat) 不支持 (?!pat)
| 或 \| | \| |或\| (要表达|,得用\\|) | \| |
其中任意字符 [xyz] [xyz] [xyz] [xyz] [xyz] [xyz] [xyz]
[.ch.] [=ch=] 不支持 不支持 [.ch.] 不支持 不支持 不支持 不支持
单词边界 \b \b \b \b 不支持 \b 不支持 \b
非单词边界 \B \B \B \B 不支持 \B 不支持 \B
单词左右边界 <> \< \> \< \> \< \> 不支持 (><和\>\<和\\>\\<同义 不支持(><和\>\<同义 \< \> 不支持(><和\>\<同义
控制字符 /cx 不支持 不支持 \cx 不支持 \cx 不支持 \cx
数字\d 不支持 不支持 不支持 不支持 \d \d \d
非数字\D 不支持 不支持 不支持 不支持 \D \D \D
换页 \f 不支持 不支持 高版本支持 \f \f 另义 \f表示文件名字符 \f
换行 \n 不支持 不支持 不支持 \n \n \n \n
回车 \r 不支持 不支持 \r \r \r \r \r
空白 \s 不支持 不支持 不支持 不支持 \s \s \s
非空白 \S 不支持 不支持 不支持 不支持 \S \S \S
制表符 \t 不支持 不支持 高版本支持 \t \t \t \t
垂直制表符 \v 不支持 不支持 高版本支持 \v \v 另义 \v表示very magic \v
单词字符 \w [A-Za-z0-9_] \w \w \w 不支持 \w \w \w
非单词字符 \W [^A-Za-z0-9] \W \W \W 不支持 \W \W \W
\xn 16进制 不支持 不支持 高版本支持 \xn \xn 另义 \x表示[0-9A-Za-z] \xn
\n 八进制 不支持 不支持 不支持 \n \n 不支持 \n
\n 后向引用 \n \n \n \n 仅取结果可用 \n \n 仅取结果可用 \n
[:alnum:] 字母和数字 [:alnum:] [:alnum:] [:alnum:] [:alnum:] [:alnum:] [:alnum:] 不支持
[:alpha:] 字母 [:alpha:] [:alpha:] [:alpha:] [:alpha:] [:alpha:] [:alpha:] 不支持
[:cntrl:] 控制字符 [:cntrl:] [:cntrl:] [:cntrl:] [:cntrl:] [:cntrl:] [:cntrl:] 不支持
[:digit:] 数字 [:digit:] [:digit:] [:digit:] [:digit:] [:digit:] [:digit:] 不支持
[:graph:] 可打印字符(不含空格) [:graph:] [:graph:] [:graph:] [:graph:] [:graph:] [:graph:] 不支持
[:lower:] 小写 [:lower:] [:lower:] [:lower:] [:lower:] [:lower:] [:lower:] 不支持
[:print:] 可打印字符(含空格) [:print:] [:print:] [:print:] [:print:] [:print:] [:print:] 不支持
[:punct:] 标点 [:punct:] [:punct:] [:punct:] [:punct:] [:punct:] [:punct:] 不支持
[:space:] 空格 [:space:] [:space:] [:space:] [:space:] [:space:] [:space:] 不支持
[:upper:] 大写字母 [:upper:] [:upper:] [:upper:] [:upper:] [:upper:] [:upper:] 不支持
[:xdigit:] 16进制数字 [:xdigit:] [:xdigit:] [:xdigit:] [:xdigit:] [:xdigit:] [:xdigit:] 不支持
[:return:] 不支持 不支持 不支持 不支持 不支持 [:return:] 不支持
[:tab:] 不支持 不支持 不支持 不支持 不支持 [:tab:] 不支持
[:escape:] 不支持 不支持 不支持 不支持 不支持 [:escape:] 不支持
[:backspace:] 不支持 不支持 不支持 不支持 不支持 [:backspace:] 不支持


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多