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 ...
 
随机推荐
- Debian 8下手工安装 Eclipse CDT neon.2
			
从 http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/neon2 下载 eclipse-cpp-neon-2-li ...
 - 背水一战 Windows 10 (119) - 后台任务: 后台下载任务(任务分组,组完成后触发后台任务)
			
[源码下载] 背水一战 Windows 10 (119) - 后台任务: 后台下载任务(任务分组,组完成后触发后台任务) 作者:webabcd 介绍背水一战 Windows 10 之 后台任务 后台下 ...
 - Javascript高级编程学习笔记(38)—— DOM(4)Text
			
Text类型 html页面中的纯文本内容就属于Text类型 纯文本内容可以包含转义后的html字符,但不能包括 html 代码 text类型具有以下属性.方法 nodeType:3 nodeName: ...
 - Win10下python不同版本同时安装并解决pip共存问题
			
特别说明,本文是在Windows64位系统下进行的,32位系统请下载相应版本的安装包,安装方法类似. 使用python开发,环境有Python2和 python3 两种,有时候需要两种环境切换使用,下 ...
 - Java核心技术卷一基础知识-第5章-继承-读书笔记
			
第5章 继承 本章内容: * 类.超类和子类 * Object:所有类的超类 * 泛型数组列表 * 对象包装器和自动装箱 * 参数数量可变的方法 * 枚举类 * 反射 * 继承设计的技巧 利用继承,人 ...
 - 11.Django2.0文档
			
第四章 模板 1.标签 (1)if/else {% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即,变量存在,非空,不是布尔值假),系统会显示在 {% if %} 和 {% e ...
 - Jenkins系列之七——前端app自动打包
			
了两周终于搞掂了,期间各种搜教程.各种懵逼,各种坑对小白来还是很难的额.废话不多说直接开撸~~~ 一.介绍下什么是Gradle Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持m ...
 - sql server 备份与恢复系列一 必备知识
			
一.备份概述 数据安全是数据库的生命,数据库在使用过程中难免会遇到如:使用者的误操作或是被恶意修改,硬件故障导致数据文件无法被访问,自然灾害导致机房在物理上的损毁.本章从备份与恢复的功能作为解决问题的 ...
 - 基于Electron+.NET Core的前后端分离的跨平台桌面应用
			
Web做界面比原生桌面界面开发速度真心要快很多,而且组件也多. 分析: 1..NET Core和Electron都是跨平台的. 2.NET Core做后端很方便,但是没有GUI,Electron做桌面 ...
 - java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题
			
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...