正则表达式:专门用于字符串处理的语言,用来描述字符串特征的表达式

元字符

.

之间可以出现任意单个字符(除了\n 换行)

例如: a.b   意思是这个表达式必须是三个字符,第一个字符是a,第三个字符是b,中间是任意一个字符(中间字符也可以是空格)

[]

字符的筛选

例如: a[fgh]b 意思是这个表达式必须是三个字符,第一个字符是a,第三个字符是b,中间字符必须是f g h 中的一个字符

例如  a[0-9]b     第二个字符可以是 0到9之间的任意一个字符

例如 a[0-9a-zA-Z]b   第二个字符可以是 0到9或者a到z或者A-Z之间的任意一个字符

例如 a[^0-9a-z]b       第二个字符可以是除了0-9 a-z 以外的任意一个字符

|

表示或的意思

例如: z|food   意思是 这个表达式是z 或者 food (| 优先级最低)

例如:(z|f)ood 意思是 这个表达式是zood 或者 food

()

改变优先级,提取组

*

限定符,表示 * 前一个字符可以出现零次或者多次

例如: af*b   表示 f 可以不出现(ab)或者出现多次(afffffffb)

例如: a.*b   表示 ab间可以出现任何数字(asdgdffsgb)

+

限定符,表示 *号前一个字符至少出现一次

例如: a.+b    表示ab之间至少要出现一个字符(adfgsdfhsdfhb)

例如:a[0-9]b   表示 ab间至少有一个0-9的数字并且这个数字可以出现任意次(a0000b)

?

限定符,表示?前一个字符必须出现零次或者一次

例如: a.?b   这个字符串必须是ab 或者 a.b

?

另一个作用:终止贪婪模式。 正则表达式默认是贪婪模式

{}

两种

1、{n}  之前的一个字符必须出现n次

例如  a[0-9]{5}b   ab间的存在5个相同字符并且这5个字符必须是0到9之前的一个数 (a88888b)

2、{n,m} 之前的一个字符最少出现n次,最多出现m次

例如  a[0-9]{5,7}b         lue

3、{n,} 表示之前的一个字符至少出现n次,没有上限

^

必须是 xxx开头

例如 ^ab  表达式必须是ab开头 (ab454gag)

$

必须是 xxx结束

例如 xyz$ 表达式末尾必须是xyz(dhdfshxyz)

简写表达式

\d 等价于[0-9]    英文单词 digital(数字)

\D等价于[^0-9]

\s  表示所有不可见空白符 (包括中英文空格、回车、tab等)

例如: a\s*b  表示ab之间可以有任意空白或者只是ab两个字符

\S(大写) 表示除了\s(小写) 以外的所有字符

\w 匹配字母或数字或下划线或汉字 。   除了%&#@!$

\W

\b 单机的边界

@

如果一个字符串里出现带\的正则(如:\d)就需要在字符串前加个@,目的是让告诉.net编译器这个字符串里的\不是转义用的。

Regex 类

表示不可变的正则表达式。

using System.Text.RegularExpressions;

构造函数

Regex()    初始化 Regex 类的新实例

Regex(String)  新实例初始化 Regex 为指定的正则表达式类(传一个正则表达式进来)

还有三个暂时不用

方法 

Regex.Match(string) 传一个字符串进去  (返回一个Match对象)

Regex.Match(string,string)第一个穿需要判断的字符串,第二个传正则表达式(返回一个Match对象)

Regex.IsMatch(string,string) 返回一个布尔值用来判断是否匹配成功

            string p = "a.b";
string str="addb";
if (Regex.IsMatch(str, p))
{
Console.WriteLine("匹配成功"); }
else
{
Console.WriteLine("匹配不成功");
}
Console.ReadKey();
}

Match 类

表示单个正则表达式匹配的结果

 using System.Text.RegularExpressions;

属性

Length 获得字符串长度

            string p = "a.b";
string str="adb";
Match match = Regex.Match(str, p);
int a = match.Length;
Console.WriteLine(a);

Success  判断是否匹配成功

 string p = "a.b";
string str="addb";
Match match = Regex.Match(str, p);
if (match.Success)
{
Console.WriteLine("匹配成功"); }
else
{
Console.WriteLine("匹配不成功");
}
Console.ReadKey();

Value  获得字符串的值

            string p = "a.b";
string str="adb";
Match match = Regex.Match(str, p);
string a = match.Value;
Console.WriteLine(a);

(33)C#正则表达式的更多相关文章

  1. php电话号码正则表达式常用例子

    电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号) 02   03 ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{ ...

  2. 最强 Android Studio 使用小技巧和快捷键

    写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本 ...

  3. AS技巧合集「编码技巧篇」

    转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=254725&extra=page%3D2%26filter%3Dautho ...

  4. 62个Android Studio小技巧合集

    1书签(Bookmarks) 描述:这是一个很有用的功能,让你可以在某处做个标记(书签),方便后面再跳转到此处. 调用:Menu → Navigate → Bookmarks 快捷键: 添加/移除书签 ...

  5. Android Studio 小技巧合集

    本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本文将这62 ...

  6. 最强 Android Studio 使用小技巧和快捷键总结

    最强 Android Studio 使用小技巧和快捷键总结   写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android ...

  7. 转:Andriod studio技巧合集

    1. 书签(Bookmarks) 描述:这是一个很有用的功能,让你可以在某处做个标记(书签),方便后面再跳转到此处. 调用:Menu → Navigate → Bookmarks 快捷键: 添加/移除 ...

  8. C# 正则表达式大全

    文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...

  9. .net使用正则表达式校验、匹配字符工具类

    开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...

随机推荐

  1. QQ空间相册展示特效

    <!doctype html> <html lang="en"> <head> <title>QQ空间相册展示特效<title ...

  2. FMDB的线程安全

    最近面试被问到FMDB的多线程处理问题,因为之前项目中是移植别人的代码,没有踩过这里的坑. 问题: 多线程同时访问数据库时,报数据库锁定的问题,错误信息是: Unknown error finaliz ...

  3. 《Cracking the Coding Interview》——第14章:Java——题目5

    2014-04-26 19:06 题目:Java中的对象反射机制是什么?有鼠么用? 解法:完全不了解,因为java编程经验太少,完全没用过.查了一些资料后,感觉反射机制是个强大并需要边用边体会的强大工 ...

  4. 《Cracking the Coding Interview》——第11章:排序和搜索——题目6

    2014-03-21 21:50 题目:给定一个MxN的二位数组,如果每一行每一列都是升序排列(不代表全展开成一个一维数组仍是升序排列的).请设计一个算法在其中查找元素. 解法:对于这么一个数组,有两 ...

  5. USACO Section1.3 Combination Lock 解题报告

    combo解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  6. Mybatis + Oracle 批量insert的问题

    这个问题真的太坑了 之前用ibatis+sql server 的foreach 很容易就写出来批量insert数据,但是测试后报错:SQL结束格式错误 现在换到银行工作,数据库也换成Oracle了 特 ...

  7. C# http Post与Get方法控制继电器

    ---恢复内容开始--- using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...

  8. Jtag To Axi4 debug 读写寄存器的tcl脚本封装

    把下列代码保存为.tcl或者.txt文本保存在某个路径下 打开vivado,在tcl concle中输入 “source 文件路径”,将脚本加载至工具中后, 例如读寄存器地址32'h12345678的 ...

  9. stack,heap的区别

    一个由C/C++编译的程序占用的内存分为以下几个部分    1.栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等.其    操作方式类似于数据结构中的栈.    ...

  10. hdu1576逆元的一道水题

    hdu 1576 Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1).   ...