zoukankan      html  css  js  c++  java
  • 正则表达式编译

    正则表达式,是我们在做文本查找和处理时经常用到的。关于它的一些基础知识和教程,请参考下面的一些链接

    http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm

    使用正则表达式并不难,关键就在于编写一个合适的pattern。说到这里,就不得不提一下regexlib这个网站,里面有好多写好的正则表达式。我就经常光顾这个网站,进行一些搜索。据说咱国内也有哥们做了一个类似的网站,地址不记得了

    http://regexlib.com/

    在.NET里面使用正则表达式,主要就是使用System.Text.RegularExpressions.Regex这个类。具体的用法可以参考帮助文档。

    但是,每次都编写pattern,似乎并不是很理想。所以,Regex还提供了一个方法CompileToAssembly,这样,我们就可以把一些常用的表达式编译起来,以便重复使用。为此,我专门写了一个工具

    image

    以下代码把两个正则表达式编译到E:\Temp\sampleassembly.dll这个程序集中

    string outFile = @"e:\temp\sampleassembly.dll";
    List<RegexCompilationInfo> infos = new List<RegexCompilationInfo>();
    RegexCompilationInfo info = new RegexCompilationInfo(@"\d{5,10}", RegexOptions.Compiled | RegexOptions.IgnoreCase, "Number", "SampleNamespace", true);
    infos.Add(info);
    infos.Add(new RegexCompilationInfo(@"^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$", RegexOptions.IgnoreCase | RegexOptions.Compiled, "Email", "SampleNamespace", true));
    System.Reflection.AssemblyName an = new System.Reflection.AssemblyName(System.IO.Path.GetFileNameWithoutExtension(outFile));
    string currentDir = Environment.CurrentDirectory;
    Environment.CurrentDirectory = System.IO.Path.GetDirectoryName(outFile); //切换一下当前目录的目的是使得编译的时候,可以把程序集放到相应的目录中去
    Regex.CompileToAssembly(infos.ToArray(),an);
    Environment.CurrentDirectory = currentDir;

    编译好之后,在客户程序中使用的话,大致是这样的:

    1. 添加对程序集的引用

    2. 实例化里面的类型,然后调用相关方法。例如

    SampleNamespace.Number numberRegex = new SampleNamespace.Number();
    MessageBox.Show(numberRegex.IsMatch("12345").ToString());

    值得注意的是,因为正则表达式的pattern已经被编译到了程序集,所以这边的IsMatch方法只需要输入需要验证的文本即可。

    另外,在编写这个小工具的时候,偶然发现有一个哥们已经写了一个Console App,也是做这个事情的。下面链接可以供参考

    http://www.codeplex.com/RegexC

  • 相关阅读:
    telnet模拟http訪问
    network: Android 网络推断(wifi、3G与其它)
    Cocos2d-x学习笔记(19)(TestCpp源代码分析-3)
    Thinkphp编辑器扩展类kindeditor用法
    逛自己的微博,回想以前的那个“我”
    微信生成二维码
    [C++]四种方式求解最大子序列求和问题
    Android 颜色渲染(二) 颜色区域划分原理与实现思路
    Android 颜色渲染(一) 颜色选择器 ColorPickerDialog剖析
    Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1252236.html
Copyright © 2011-2022 走看看