C#正则表达式
1. 使用到的类
C#中使用正则表达式需要如下几个类(类所在的命名空间为:System.Text.RegularExpressions):
* Regex 编译后的表达式的实例
* RegexOptions 提供用于设置正则表达式的枚举值
* RegexCompilationInfo:提供编译器用于将正则表达式编译为独立程序集的信息
* Capture: 包含一次匹配的结果;
* CaptureCollection: Capture的序列;
* Group: 一次组记录的结果,由Capture继承而来;
* GroupCollection:表示捕获组的集合
* Match: 一次表达式的匹配结果,由Group继承而来;
* MatchCollection: Match的一个序列;
* MatchEvaluator: 执行替换操作时使用的委托;
2. 类方法介绍
Regex类中还包含一些静态的方法:
Escape: 对字符串中的regex中的转义符进行转义;
IsMatch: 如果表达式在字符串中匹配,该方法返回一个布尔值;
Match: 返回Match的实例;
Matches: 返回一系列的Match的方法;
Replace: 用替换字符串替换匹配的表达式;
Split: 返回一系列由表达式决定的字符串;
Unescape: 不对字符串中的转义字符转义。
3. 如何用?
3.1 新建一个Regex实例对象
/** * 使用两个参数的构造 * RegexOptions属于枚举类型,包括IgnoreCase(忽略大小写)、ReghtToLeft(从右向左)、None(默认)、CultureInvariant(忽略区域)、Multline(多行模式)和SingleLine(单行模式)) * */ Regex regex = new Regex(@"[+-]{1}\d{1,}[.]*[0-9]*", RegexOptions.None); // 或者 Regex regex = new Regex(@"[+-]{1}\d{1,}[.]*[0-9]*");
3.2 获取匹配结果,调用Regex对象的match方法
/** * 获取匹配结果对象 * 匹配结果Match类对象的属性: * Success:匹配是否成功 * Value: 如果匹配成功,那么可以取得匹配的子字符串 * 方法: * NextMatch: 从上一个匹配结果的位置开始,返回包含下一匹配结果的新Match对象 */ Match match = regex.Match(text);
3.3 获取匹配结果子字符串
while(match.Success) { Console.WriteLine(match.Value); match = match.NextMatch(); }
string text = @"Flow -0880.809 m3/h"; Regex regex = new Regex(@"[+-]{1}\d{1,}[.]*[0-9]*", RegexOptions.None); Console.WriteLine("regex match count:" + regex.Matches(text).Count); Match match = regex.Match(text); if (match.Success) { Console.WriteLine(match.Value); match = match.NextMatch(); }
3.4 常用的正则表达式
IP地址匹配:
简单的匹配: (\d{1,3}\.){3}\d{1,3}
正确的匹配: ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
4. 参考博客
http://blog.csdn.net/begtostudy/article/details/3081083
http://www.cnblogs.com/Fskjb/archive/2010/01/22/1654439.html
http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
http://zhoufoxcn.blog.51cto.com/792419/283021