正则表达式的使用(C#)
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#)的更多相关文章
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- Python高手之路【五】python基础之正则表达式
下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print( ...
- C# 正则表达式大全
文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...
- C#基础篇 - 正则表达式入门
1.基本概念 正则表达式(Regular Expression)就是用事先定义好的一些特定字符(元字符)或普通字符.及这些字符的组合,组成一个“规则字符串”,这个“规则字符串”用来判断我们给定的字符串 ...
- JavaScript正则表达式,你真的知道?
一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...
- Python 正则表达式入门(中级篇)
Python 正则表达式入门(中级篇) 初级篇链接:http://www.cnblogs.com/chuxiuhong/p/5885073.html 上一篇我们说在这一篇里,我们会介绍子表达式,向前向 ...
- 【JS基础】正则表达式
正则表达式的() [] {}有不同的意思. () 是为了提取匹配的字符串.表达式中有几个()就有几个相应的匹配字符串. (\s*)表示连续空格的字符串. []是定义匹配的字符范围.比如 [a-zA-Z ...
- JavaScript 正则表达式语法
定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...
- [jquery]jquery正则表达式验证(手机号、身份证号、中文名称)
数字判断方法:isNaN()函数 test()方法 判断字符串中是否匹配到正则表达式内容,返回的是boolean值 ( true / false ) // 验证中文名称 function isChin ...
- JS中给正则表达式加变量
前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下. 一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = &quo ...
随机推荐
- GPU 显存释放
我们在使用tensorflow 的时候, 有时候会在控制台终止掉正在运行的程序,但是有时候程序已经结束了,nvidia-smi也看到没有程序了,但是GPU的内存并没有释放,那么怎么解决该问题呢? 首先 ...
- Java 8 – StringJoiner example
In this article, we will show you a few StringJoiner examples to join String. 1. StringJoiner1.1 Joi ...
- React Native 错误锦集
启动时报错 : React Native version mismatch. JavaScript version: 0.57.4 Native version: 0.55.2 解决方案传送门:htt ...
- es5 温故而知新 创建私有成员、私有变量、特权变量的方法
其实js是不支持私有变量的.哪怕到es6的class语法.虽然有许多变相的方式.但非常冗余而不推崇. 这里介绍的实际上也不是class语法,而是普通的函数,并且利用IIFE(闭包)的方式来实现私有. ...
- Vue 动态组件、动画、插件
1 动态组件 ①简单来说: 就是几个组件放在一个挂载点下,然后根据父组件的某个变量来决定显示哪个,或者都不显示. ②动态切换: 在挂载点使用component标签,然后使用v-bind:is=”组件名 ...
- Android 4.1的新特性介绍
原文:http://android.eoe.cn/topic/summary 果冻豆 - Android 4.1 通知系统 - Notifications 在Android 4.1系统上通知的功能大大 ...
- Atitit 图像处理之编程之类库调用的接口api cli gui ws rest attilax大总结.docx
Atitit 图像处理之编程之类库调用的接口api cli gui ws rest attilax大总结.docx 1. 为什么需要接口调用??1 1.1. 为了方便集成复用模块类库1 1.2. 嫁 ...
- 如何将git本地创建的项目推送到github仓库
除了集中式的版本控制系统CVS和SVN外,还有目前世界上最先进的分布式版本控制系统Git,它的创始人是创建了linux的大神 - linus.GitHub网站与2008年开始服役,为开源项目免费提供G ...
- git push remote error解决办法
通常在用git clone了remote端(服务器)的git仓库后,再进行了自己一系列修改后,会将自己测试后稳定的状态push到remote端,以更新源仓库,使 其他人在pull的时候得到自己的修改. ...
- zsh与oh-my-zsh
在开始今天的 MacTalk 之前,先问两个问题吧: 1.相对于其他系统,Mac 的主要优势是什么?2.你们平时用哪种 Shell?…… 第一个童靴可以坐下了,Mac 的最大优势是 GUI 和命令行的 ...