什么是正则表达式:

正则表达式是用来进行文本处理的技术,是语言无关的。

是由普通字符和特殊字符组成的文字模式,用来描述字符串的特征。

元字符:

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#正则表达式。的更多相关文章

  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. post和get请求的参数乱码

    对于做Java WEB项目同学来说,中文乱码问题是一个经常遇到而又非常头痛的问题,而最容易出现乱码的环节就是在浏览器向服务器发送请求的过程,至于出现乱码的原因不是本文的关注的重点,想了解的朋友可以参考 ...

  2. MySql在Mac上的安装配置

    一.下载安装 官网下载社区版dmg安装文件: https://dev.mysql.com/downloads/mysql/ 1.执行安装文件,按步骤完成安装. 2.安装完成后终端输入: mysql - ...

  3. noip第25课资料

  4. ios uibutton加数字角标

    http://www.jianshu.com/p/0c7fae1cadac 第一种:https://github.com/mikeMTOL/UIBarButtonItem-Badge第二种:https ...

  5. 因为曾经装过Mysql导致再次装时windows无法启动MySQL服务报错1067的解决方法

    找到这里 MySQL右击属性 检查这里的可执行文件的路径是否正确,因为我这里显示的是原先的文件夹所以会一直启动失败,修改一下 这里你去百度经验 windows服务修改可执行文件路径 网址https:/ ...

  6. Linux下Oracle数据库的安装

    记录详细过程以备使用 一.准备安装 为了确保Oracle数据库11g能够成功安装,您需要做好准备工作,例如检查网络配置.更改Linux内核参数.创建用户Oracle.创建安装目录.设置用户Oracle ...

  7. Codeforces Round #554 (Div. 2) 1152A - Neko Finds Grapes

    学了这么久,来打一次CF看看自己学的怎么样吧 too young too simple 1152A - Neko Finds Grapes 题目链接:"https://codeforces. ...

  8. 110道python面试笔试题汇总,你能答对几道?

    数据分析系列教程插播一篇面试题教程,最近公众号新来了不少朋友,这几天不少粉丝留言说问我有没有python面试题,其实之前分享过一些面试题,今天统一再给大家分享一遍,也希望能帮助此时仍在找工作的同学,尽 ...

  9. Java核心技术卷一基础知识-第3章-Java的基本程序设计结构-读书笔记

    第3章 Java的基本程序设计结构 本章内容: 一个简单的Java应用程序 字符串 注释 输入输出 数据类型 控制流 变量 大数值 运算符 数组 本章主要讲述程序设计相关的基本概念(如数据类型.分支以 ...

  10. 10分钟看懂Docker和K8S

    本文来源:鲜枣课堂 2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫"dotCloud"的公司. 这家公司主要提供基于PaaS的云计算技术服务.具体来说,是和LXC有关的 ...