C#正则表达式。
什么是正则表达式:
正则表达式是用来进行文本处理的技术,是语言无关的。
是由普通字符和特殊字符组成的文字模式,用来描述字符串的特征。
元字符:
1、 . : 除 \n 以外的任意的单个字符。 加\ 可以转义
a.b----- 表示 a b 之间可以有除了 \n 的任意字符。
2、 [ ] :取其中一个字符(必须)。 [ a -z ] [ a-zA-z ] ,点出现在里面表示一个普通点。
3、| : 或 z|food z或food (z)|(f)ood z 或f ood
4、() 表示优先级 或 表示提取组
5、* : a.*b * 表示前面的表达式出现0次或多次。
6、+ : a.+b + 表示前面的表达式出现一次或多次
7、? : a.?b ?表示前面的表达式出现0次或1次。
8、{} : [0-9] {8} 固定次数 [0-9] {4,7} 最少 最多
9、^ : ^ a 必须以a开头。
10、 $ : $a 以a结尾。
11、[ ^a ] : 不能有a的一个字符
12、 \d : 0-9 加@
13、|D :除0-9
14、\w : 所有英文数字单字符。汉字也行 下划线
15、\W : 除了。。。。
16、\s : 表示所有不可见字符。 \S : 除了。。。。。
使用正则表达式。
class Program
{
static void Main(string[] args)
{
//Regex.IsMatch(); //判断给定的字符串是否匹配某个正则表达式。
//Regex.Match(); //用来从给定的字符串中按照正则表达式的要求提取【一个】匹配的字符串。
//Regex.Matches(); //用来从给定的字符串中按照正则表达式的要求提取【所有】匹配的字符串。
// Regex.Replace(); //替换所有正则表达式匹配的字符串为另外一个字符串。
while (true)
{
Console.WriteLine("输入一个字符串");
string str = Console.ReadLine();
//验证给定的字符串是否为合法的邮政编码。
//要想完全匹配,必须加 ^ 和 $ . 否则只要含有就返回True
bool b = Regex.IsMatch(str, "^[0-9]{6}$");
Console.WriteLine(b);
}
}
}
}
字符串提取:
class Program
{
static void Main(string[] args)
{
//Regex.IsMatch(); //判断给定的字符串是否匹配某个正则表达式。
//Regex.Match(); //用来从给定的字符串中按照正则表达式的要求提取【一个】匹配的字符串。
//Regex.Matches(); //用来从给定的字符串中按照正则表达式的要求提取【所有】匹配的字符串。
// Regex.Replace(); //替换所有正则表达式匹配的字符串为另外一个字符串。 //提取字符串中所有匹配项。
string str = "ss 23 哈哈 2233收索 66aa12";
MatchCollection matches= Regex.Matches(str, "[0-9]+");
foreach (var item in matches)
{
Console.WriteLine(item);
} }
}
贪婪模式与非贪婪模式。
贪婪:.+ : 默认为贪婪模式,尽可能多的匹配。
非贪婪: .+? : 尽可能少的匹配(1个) 在限定符后使用 ? 表示终止贪婪模式。
class Program
{
static void Main(string[] args)
{
//Regex.IsMatch(); //判断给定的字符串是否匹配某个正则表达式。
//Regex.Match(); //用来从给定的字符串中按照正则表达式的要求提取【一个】匹配的字符串。
//Regex.Matches(); //用来从给定的字符串中按照正则表达式的要求提取【所有】匹配的字符串。
// Regex.Replace(); //替换所有正则表达式匹配的字符串为另外一个字符串。
string msg = "大家好,我是杨幂。我是张靓颖。我是刘德华。";
MatchCollection matches = Regex.Matches(msg, "我是.*?。");
foreach (var item in matches)
{
Console.WriteLine(item);
} }
}
提取网页上的邮箱。
class Program
{
static void Main(string[] args)
{
//1、下载字符串。
WebClient client = new WebClient();
string html = client.DownloadString("file:///C:/Users/天/Desktop/1.html");
//从字符串中提取邮件地址。
MatchCollection matches = Regex.Matches(html, @"[a-zA-Z0-9]+@[a-zA-Z0-9.]+");
foreach (Match item in matches)
{
Console.WriteLine(item.Value);
}
Console.WriteLine("一共{0}个邮箱地址",matches.Count);
}
}
正则替换:
Regex.Replace()
class Program
{
static void Main(string[] args)
{
string msg = "你aaa好aa啊aaaaa";
msg = Regex.Replace(msg, "a+", "A");
Console.WriteLine(msg);
}
}
替换组实现:
class Program
{
static void Main(string[] args)
{
//把 ' ' 里的内容替换为 【 】
string msg = "hello 'welcom' to 'china'";
msg = Regex.Replace(msg, "'(.+?)'", "【$1】");
Console.WriteLine(msg);
}
}
隐藏手机号:
class Program
{
static void Main(string[] args)
{
string msg = "张玉昊 15983531955 胡云钰 15008306525";
msg = Regex.Replace(msg, "([0-9]{3})[0-9]{4}([0-9]{4})", "$1****$2");
Console.WriteLine(msg);
}
}
\b 的使用 判断是否为一个单词 \bdog\b --- 是不是dog这个单词。
提取出所有三个字母的单词:
static void Main(string[] args)
{ string str = "this is a dog, it's not a cat.";
MatchCollection matches= Regex.Matches(str, @"\b[a-zA-Z]{3}\b");
foreach (Match item in matches)
{
Console.WriteLine(item.Value);
}
}
反向引用。
反向引用使用 \ 替换引用用 $
输出 我喜欢你
class Program
{
static void Main(string[] args)
{ string str = "我我我喜喜欢你你";
str = Regex.Replace(str, @"(.)\1+","$1");
Console.WriteLine(str);
}
}
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 ...
随机推荐
- WSGI协议以及对服务器的影响
下面的内容纯属个人学习心得,如果对于我的观点有疑问,敬请留言,我将虚心向大牛学习. WSGI的全称是WEB SERVICE GATEWAY INTERFACE.WSGI 不是服务器,不是API,也不是 ...
- PYTHON进阶(3)
学习内容: 1.Python模块redis 2.Python模块memcach 3.Python模块SQLAlchemy 一.Python模块redis redis介绍 二.Python模块memca ...
- 初见SDN
软件定义网络(Software Defined Network, SDN ),是一种新型网络架构. SDN=OpenFlow:因为Openflow是大多数人唯一看得到的具体化的SDN的实现形式(实际上 ...
- 制作系统U盘
没有任何宣传软件成分昂,我就是这做的. 1.在百度搜索上搜索“通用PE大师”,点开了这个网站http://up.6615261.cn/index.html,打开之后如下图,下载这个二合一版本 2.在电 ...
- Senparc.Weixin SDK v5.0 升级公告
经过五年半的持续维护,Senparc.Weixin SDK 逐步丰满和完善,在升级的过程中,我们为基础库(Senparc.Weixin.dll)加入了许多通用的功能,例如加密/解密算法.通用缓存方法等 ...
- 【redux】详解react/redux的服务端渲染:页面性能与SEO
亟待解决的疑问 为什么服务端渲染首屏渲染快?(对比客户端首屏渲染) react客户端渲染的一大痛点就是首屏渲染速度慢问题,因为react是一个单页面应用,大多数的资源需要在首次渲染前就加载 ...
- 利用Swashbuckle生成Web API Help Pages
利用Swashbuckle生成Web API Help Pages 本文将通过Swagger的.NET Core的实现封装工具Swashbuckle来生成上一篇-<创建ASP.NET Core ...
- java数据结构面试问题—快慢指针问题
上次我们学习了环形链表的数据结构,那么接下来我们来一起看看下面的问题, 判断一个单向链表是否是环形链表? 看到这个问题,有人就提出了进行遍历链表,记住第一元素,当我们遍历后元素再次出现则是说明是环形链 ...
- 40个Java多线程面试问题
1. 多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡.所谓"知其然知其所以然","会用"只 ...
- 关键字提取算法TF-IDF
在文本分类的学习过程中,在“如何衡量一个关键字在文章中的重要性”的问题上,遇到了困难.在网上找了很多资料,大多数都提到了这个算法,就是今天要讲的TF-IDF. 总起 TF-IDF,理解起来相当简单,他 ...