1, C#中与正则表达式相关类。

C#中与正则表达式相关类的几个常用类是Regex,Match,Group,Captrue,RegexOption首先我们看看这几个类的类图关系,如何你有正则表达式基础,从这些方法和属性中就大概能明白使用方法了。

Regex:与正则表达式相关的操作必须通过它来执行的,它还提供了Match,IsMatch,Replace,Split几个静态的方法。

ResgexOptions:初始化Regex实例的时候,可以指定匹配的选项,如忽略大小写,多行模式等。

Match:一个匹配结果,其中还包含分组Group的一个集合。其中Index为0的分组是默认分组,不管正则表达式中有没有分组,这个Group都是存在的。所以在处理自定义的分组时,要跳过这个分组。

Group:一个分组,包含多个Capture。

Capture:一个捕获。

这3个类有继承关系,可以看上面的例子,所以一些属性如Value在3个类中都是存在的。

2, 简单使用

     // 检查是否是数字
if (Regex.IsMatch("956", "[0-9]+"))
{
System.Diagnostics.Debug.WriteLine("数字匹配成功");// 结果:数字匹配成功
}
// 检查是否是字母(忽略大小写)
if (Regex.IsMatch("abcABC", "[a-z]+", RegexOptions.IgnoreCase))
{
System.Diagnostics.Debug.WriteLine("字符匹配成功");// 结果:字符匹配成功
}
// 替换‘abc’(忽略大小写)为‘@’
string res = Regex.Replace("i abc like ABC it", "abc", "@", RegexOptions.IgnoreCase);
// 结果:i @ like @ it // 以‘abc’(忽略大小写)拆分字符串
string[] splits = Regex.Split("i abc like ABC it", "abc", RegexOptions.IgnoreCase);
// 结果为3个字符串,i,like,it // 根据匹配结果,打印出Match,Group,Capture的值
Regex regex = new Regex(this.txtPattern.Text);
var matches = regex.Matches(this.txtInput.Text); string result = string.Empty;
int count = matches.Count;
result += "matches.Count:" + count + Environment.NewLine;
foreach (Match m in matches)
{
result += "matche value:" + m.Value + Environment.NewLine;
result += "matche group count:" + m.Groups.Count + Environment.NewLine;
for (int i = 0; i < m.Groups.Count; i++)
{
Group g = m.Groups[i];
result += "--group " + (i + 1) + Environment.NewLine;
result += "--group Value " + g.Value + Environment.NewLine;
result += "--capture count:" + m.Captures.Count + Environment.NewLine;
for (int j = 0; j < g.Captures.Count; j++)
{
Capture c = g.Captures[j];
result += "----capture " + (j + 1) + Environment.NewLine;
result += "----capture Value " + c.Value + Environment.NewLine;
}
}
}

基本的操作就这些了,一般应用中根据需要对捕获的结果进行具体分析。

关于正则表达式的语法可以参考这几篇文章:

正则表达式基础:http://www.cnblogs.com/xiashengwang/p/3988009.html

正则表达式分组:http://www.cnblogs.com/xiashengwang/p/3988573.html

正则表达式的使用(C#)的更多相关文章

  1. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  2. Python高手之路【五】python基础之正则表达式

    下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...

  3. C# 正则表达式大全

    文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...

  4. C#基础篇 - 正则表达式入门

    1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...

  5. JavaScript正则表达式,你真的知道?

    一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...

  6. Python 正则表达式入门(中级篇)

    Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...

  7. 【JS基础】正则表达式

    正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...

  8. JavaScript 正则表达式语法

    定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...

  9. [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)

    数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...

  10. JS中给正则表达式加变量

    前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下.   一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = &quo ...

随机推荐

  1. IAR仿真时绿色箭头一直指向汇编界面,而C界面没有

    设置如下

  2. [转]Java的文件读写操作

    file(内存)----输入流---->[程序]----输出流---->file(内存) 当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStr ...

  3. Windows Mobile入门

    转自 http://www.cnblogs.com/peterzb/archive/2009/05/12/1455256.html [准备篇]        最近安排做手机视频监控方面开发,这个对我来 ...

  4. 使用gradle多渠道打包

    以友盟的多渠道打包为例,如果我们须要打包出例如以下渠道:UMENG, WANDOUJIA, YINGYONGBAO. 第一种方法.是须要创建文件的. 我们在写完我们的代码之后,在app/src以下.分 ...

  5. [tools]hugo&github构建静态网站/百度统计

    hugo/github构建网站基本原理 1.hugo是一个静态化的工具,你写md,然后他把md转换成对应样式的html, 2.并给html嵌入百度统计的script.然后你将html放到github上 ...

  6. iOS7相机隐私判断

    转自:http://borissun.iteye.com/blog/1992303 装了iOS7的ip5的隐私设置里多了相机这一项(ip4装iOS7就没有). 如果隐私里把你的app对应的相机给关了, ...

  7. K8S 详细介绍

    k8s的中文文档,参考地址:http://docs.kubernetes.org.cn/227.html

  8. hdu 2680 Choose the best route (dijkstra算法)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2680 /************************************************* ...

  9. rsync 实现文件同步 (重要数据通过rsyncr把数据同步到不同的两台服务器上,这样可以防止服务器的硬盘故障导致数据丢失) 客户端同步时如果要排某个目录

    rsync是unix系统下的数据镜像 备份工具,一般linux系统都 自带: # rpm -qa|grep rsync rsync-3.0.9-17.el7.x86_64 服务器端:10.100.0. ...

  10. FFmpeg(8)-打开音视频解码器,配置解码器上下文(avcodec_find_decoder()、avcodec_alloc_context3())

    一.avcodec_find_decoder 获取解码器.在使用之前必须保证所用到的解码器已经注册,最简单的就是调用avcodec_register_all() 函数,就像之前注册解封装器的时候,也要 ...