通过Ultrapico Expresso工具学习正则表达式 - [.Net开发]

引用:Ultrapico Expresso是一个非常强大的正则表达式构建、测试以及代码生成工具。它能够对你构建的正则表达式进行解析、验证,并输出解析结果,提供性能测试工具,支持C#、VB等代码生成,最重要的是,他提供了一个非常方便强大的正则表达式语法构建面板,即使你对正则表达式生疏了,也能在它的帮助下构建出你想要的正则模式来。而且,它还免费获取授权码,无需费心找破解了。软件里自带的帮助文档以及正则表达式库可以帮助你快速从正则菜鸟升级为正则高手。


最新版本的Ultrapico Expresso提供下面这些强大的功能:

  • 通过选择预编写代码片段来创建正则表达式
  • 可以通过手动输入或者从文件中导入两种方式来测试文本
  • 在树形结构中显示匹配,显示捕获组以及组内所有捕获
  • 加亮源文件中的匹配文本
  • 自动查找正则表达式的语法错误
  • 生成VB,C#或C++代码
  • 提供常用正则表达式库
  • 优化正则表达式
  • 更多...


首先看Expresso的操作界面:


可以看到打开软件时首先是Test Mode, 用户可以在这里进行正则表达式的验证,并且提供了Regex Analyzer的功能,用户可以很方便的查看自己书写的正则式的一些细节。除了Test Mode, 还有更为强大的Design Mode与Expression Library(个人觉得从那个Expression Library里能学到很多知识),具体的使用方法大家自己体会。 你会发现,通过这个工具,学习正则表达式的曲线会平滑一些的。

更多的学习心得待到认真学好RE与这个工具后再分享。--->To be Continued.

 

一、.Net中的正则表达式(MSDN)

不同语言、框架中的正则表达式的语法规则有所不同,这里只要讨论的是.net平台下正则表达式的相关。.net中使用正则表达式处理文本的中心构件是正则表达式引擎,该引擎在 .NET Framework 中由 System.Text.RegularExpressions.Regex 对象表示。 使用正则表达式处理文本至少要求向该正则表达式引擎提供以下两方面的信息:

  • 要在文本中标识的正则表达式模式(Pattern),在 .NET Framework 中,正则表达式模式用特殊的语法或语言定义,该语法或语言与 Perl 5 正则表达式兼容,并添加了一些其他功能,例如从右到左匹配。。
  • 要为正则表达式模式分析的文本。

 

Regex 类的方法使您可以执行以下操作:

  • 通过调用 IsMatch 方法确定输入文本中是否具有正则表达式模式匹配项。
  • 通过调用 Match 或 Matches 方法检索匹配正则表达式模式的一个或所有文本匹配项。 第一个方法返回提供有关匹配文本的信息的 Match 对象。 第二个方法返回 MatchCollection 对象,该对象对于在分析的文本中找到的每个匹配项包含一个 Match 对象。
  • 通过调用 Replace 方法替换匹配正则表达式模式的文本。

 

先用例子来具体说明.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”标识为重复.

 

二、RE学习资料:

MSDN

posted @ 2011-09-03 20:57  卿之  阅读(976)  评论(0编辑  收藏  举报
无觅相关文章插件,快速提升流量