(33)C#正则表达式
正则表达式:专门用于字符串处理的语言,用来描述字符串特征的表达式
元字符
.
之间可以出现任意单个字符(除了\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#正则表达式的更多相关文章
- php电话号码正则表达式常用例子
电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号) 02 03 ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{ ...
- 最强 Android Studio 使用小技巧和快捷键
写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本 ...
- AS技巧合集「编码技巧篇」
转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=254725&extra=page%3D2%26filter%3Dautho ...
- 62个Android Studio小技巧合集
1书签(Bookmarks) 描述:这是一个很有用的功能,让你可以在某处做个标记(书签),方便后面再跳转到此处. 调用:Menu → Navigate → Bookmarks 快捷键: 添加/移除书签 ...
- Android Studio 小技巧合集
本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本文将这62 ...
- 最强 Android Studio 使用小技巧和快捷键总结
最强 Android Studio 使用小技巧和快捷键总结 写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android ...
- 转:Andriod studio技巧合集
1. 书签(Bookmarks) 描述:这是一个很有用的功能,让你可以在某处做个标记(书签),方便后面再跳转到此处. 调用:Menu → Navigate → Bookmarks 快捷键: 添加/移除 ...
- C# 正则表达式大全
文章导读 正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法.Regex 类表示不可变(只读)的 ...
- .net使用正则表达式校验、匹配字符工具类
开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...
随机推荐
- QQ空间相册展示特效
<!doctype html> <html lang="en"> <head> <title>QQ空间相册展示特效<title ...
- FMDB的线程安全
最近面试被问到FMDB的多线程处理问题,因为之前项目中是移植别人的代码,没有踩过这里的坑. 问题: 多线程同时访问数据库时,报数据库锁定的问题,错误信息是: Unknown error finaliz ...
- 《Cracking the Coding Interview》——第14章:Java——题目5
2014-04-26 19:06 题目:Java中的对象反射机制是什么?有鼠么用? 解法:完全不了解,因为java编程经验太少,完全没用过.查了一些资料后,感觉反射机制是个强大并需要边用边体会的强大工 ...
- 《Cracking the Coding Interview》——第11章:排序和搜索——题目6
2014-03-21 21:50 题目:给定一个MxN的二位数组,如果每一行每一列都是升序排列(不代表全展开成一个一维数组仍是升序排列的).请设计一个算法在其中查找元素. 解法:对于这么一个数组,有两 ...
- USACO Section1.3 Combination Lock 解题报告
combo解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- Mybatis + Oracle 批量insert的问题
这个问题真的太坑了 之前用ibatis+sql server 的foreach 很容易就写出来批量insert数据,但是测试后报错:SQL结束格式错误 现在换到银行工作,数据库也换成Oracle了 特 ...
- C# http Post与Get方法控制继电器
---恢复内容开始--- using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...
- Jtag To Axi4 debug 读写寄存器的tcl脚本封装
把下列代码保存为.tcl或者.txt文本保存在某个路径下 打开vivado,在tcl concle中输入 “source 文件路径”,将脚本加载至工具中后, 例如读寄存器地址32'h12345678的 ...
- stack,heap的区别
一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其 操作方式类似于数据结构中的栈. ...
- hdu1576逆元的一道水题
hdu 1576 Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1). ...