引用:Ultrapico Expresso是一个非常强大的正则表达式构建、测试以及代码生成工具。它能够对你构建的正则表达式进行解析、验证,并输出解析结果,提供性能测试工具,支持C#、VB等代码生成,最重要的是,他提供了一个非常方便强大的正则表达式语法构建面板,即使你对正则表达式生疏了,也能在它的帮助下构建出你想要的正则模式来。而且,它还免费获取授权码,无需费心找破解了。软件里自带的帮助文档以及正则表达式库可以帮助你快速从正则菜鸟升级为正则高手。
最新版本的Ultrapico Expresso提供下面这些强大的功能:
首先看Expresso的操作界面:
可以看到打开软件时首先是Test Mode, 用户可以在这里进行正则表达式的验证,并且提供了Regex Analyzer的功能,用户可以很方便的查看自己书写的正则式的一些细节。除了Test Mode, 还有更为强大的Design Mode与Expression Library(个人觉得从那个Expression Library里能学到很多知识),具体的使用方法大家自己体会。 你会发现,通过这个工具,学习正则表达式的曲线会平滑一些的。
更多的学习心得待到认真学好RE与这个工具后再分享。--->To be Continued.
不同语言、框架中的正则表达式的语法规则有所不同,这里只要讨论的是.net平台下正则表达式的相关。.net中使用正则表达式处理文本的中心构件是正则表达式引擎,该引擎在 .NET Framework 中由 System.Text.RegularExpressions.Regex 对象表示。 使用正则表达式处理文本至少要求向该正则表达式引擎提供以下两方面的信息:
Regex 类的方法使您可以执行以下操作:
先用例子来具体说明.net中Regex类的使用方法:
例子一:替换子字符串
using System; using System.Text.RegularExpressions; public class Example { public static void Main() { string pattern = "(Mr\\.? |Mrs\\.? |Miss |Ms\\.? )"; string[] names = { "Mr. Henry Hunt", "Ms. Sara Samuels", "Abraham Adams", "Ms. Nicole Norris" }; foreach (string name in names) Console.WriteLine(Regex.Replace(name, pattern, String.Empty)); } }
正则表达式模式 (Mr\.? |Mrs\.? |Miss |Ms\.? ) 可匹配任何“Mr”、“Mr.” 、“Mrs”、“Mrs.” 、“Miss”、“Ms”或“Ms.” . 对 Regex.Replace 方法的调用会将匹配的字符串替换为 String.Empty;换句话说,它从原始字符串中将其移除.
例子二:标示重复的单词
using System; using System.Text.RegularExpressions; public class Class1 { public static void Main() { string pattern = @"\b(\w+?)\s\1\b"; string input = "This this is a nice day. What about this? This tastes good. I saw a a dog."; foreach (Match match in Regex.Matches(input, pattern, RegexOptions.IgnoreCase)) Console.WriteLine("{0} (duplicates '{1})' at position {2}", match.Value, match.Groups[1].Value, match.Index); } } // The example displays the following output: // This this (duplicates 'This)' at position 0 // a a (duplicates 'a)' at position 66
正则表达式模式 \b(\w+?)\s\1\b 可以解释如下:
\b: 在单词边界处开始
(\w+): 匹配一个或多个单词字符,它们一起构成可称为\1的组
\s: 与空白字符匹配
\1: 与等于名为\1的组的子字符串匹配
\b: 与字边界匹配
通过将正则表达式选项设置为 RegexOptions.IgnoreCase,调用 Regex.Matches 方法. 因此,匹配操作不区分大小写,此示例将子字符串“This this”标识为重复.