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. Knockout: 使用CSS绑定和event的blur失去焦点事件, 给未通过校验的输入框添加红色边框突出显示.

    目的:使用knockout提供的机制实现输入框失去焦点后的校验工作,并使用CSS绑定给未通过校验的输入框添加红色边框突出显示. 步骤: 先在htm中添加.error的css样式, 并在输入框中的dat ...

  2. 我是跨域的JSONP

    1.出现原因:因为web中的同源策略(域名,协议,端口号)限制了跨域访问.   2.区别于json (个人理解)json是数据交换格式,jsonp是数据通信中的交互方式   3.jsonp的get与p ...

  3. Linux 系统结构详解【转】

    Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统.部分层次结构如图1-1所 ...

  4. 【Android开发】创建你的第一个Android项目

    原文:http://android.eoe.cn/topic/summary 本文中你将了解到: 1. 使用Eclipse创建项目 2. 使用命令行创建项目 你还应该阅读: 1. 安装SDK(官网页面 ...

  5. eclipse 安装properties编辑器,显示中文

    如图添加,地址为: propedit.sourceforge.jp/eclipse/updates/ 选择红框,只安装这个即可 然后一直安装,再接受同意,最后重启eclipse就安装好了 重启后发现文 ...

  6. 绕过chrome的弹窗拦截机制

    在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的.举个例子: var btn = $('#btn'); btn.click(function () { //不会被拦截 ...

  7. centos 7 五笔安装

    # yum install ibus ibus-table-wubi 需要重启动

  8. FFmpeg(7)-av_read_frame()读取帧数据AVPacket和av_seek_frame()改变播放进度

    一.av_read_frame() 该函数用于读取具体的音/视频帧数据 int av_read_frame(AVFormatContext *s, AVPacket *pkt); 参数说明: AVFo ...

  9. Flink KAFKA

    https://data-artisans.com/blog/kafka-flink-a-practical-how-to https://github.com/dataArtisans/kafka- ...

  10. 将docker的image转移到数据盘

    1. 将 /var/lib/docker 移至数据盘 原因: docker运行中产生较大文件,以及pull下来的images会占用很多空间: 注意:在执行前确认docker已经启动,sudo dock ...