C#正则表达式
2015-08-04 18:10
309 查看
正则表达式原理篇:http://deerchao.net/tutorials/regex/regex.htm#mission /article/5233673.html
在线测试工具:http://tool.chinaz.com/regex/
C#中简单用法:
l Regex. IsMatch用法
//简单匹配某单词
Console.WriteLine("\n\nIsMatch演示:");
Regex reg = new Regex("aaron");
Console.WriteLine(string.Format("result1: {0}", reg.IsMatch("my name is aaron."))); //True
Console.WriteLine(string.Format("result2: {0}", reg.IsMatch("my name is arron."))); //False
//默认是区分大小写的,所以下面2个会返回不同的结果
Console.WriteLine(string.Format("result3: {0}", Regex.IsMatch("my name is aaron.", "Aaron"))); //False
Console.WriteLine(string.Format("result4: {0}", Regex.IsMatch("my name is arron.", "aaron"))); //False
//这个是不区分大小写的
Console.WriteLine(string.Format("result3: {0}", Regex.IsMatch("my name is aaron.", "Aaron", RegexOptions.IgnoreCase))); //True
l Regex. Replace用法
简单替换某单词
//简单替换某单词
Console.WriteLine("\n\nReplace演示:");
reg=new Regex("r");
Console.WriteLine(string.Format("result4: {0}", reg.Replace("my name is arron.", "R"))); //my name is aRRon.
Console.WriteLine(string.Format("result4: {0}", reg.Replace("my name is arron.", "R", 1)));//只进行一次替换 //my name is aRron.
l Regex.Match用法
//**********************Match用法*****************************
Console.WriteLine("\n\nMatch演示:");
reg = new Regex("aa...");//开头2个字母必须是aa,并且后面跟任意3个字符
Match m=reg.Match("my name is aaron, aaRON, Aaron");
while(m.Success)
{
Console.WriteLine(m.Value);
m = m.NextMatch();
//这里由于默认是区分大小写的,所以
// aaron 是Match的
// aaRON 也是Match的
// Aaron 不会Match
}
l Regex.Matchs用法
//******************MatchsCollection用法***********************
Console.WriteLine("\n\nMatchsCollection演示:");
MatchCollection mc = Regex.Matches("my name is aaron, aaRON, Aaron", "aa...");//开头2个字母必须是aa,并且后面跟任意3个字符
Console.WriteLine(string.Format("found: {0}", mc.Count));
基础篇:
1、元字符:https://msdn.microsoft.com/zh-cn/library/ae5bf541(v=vs.90).aspx
2、重复次数:默认1次:{1} 如\d和\d{1}等效的
3、分支:相当于if条件中的或运算: 注意 ^\s{2}$|^\d{3}$ 和 ^\s{2}|\d{3}$ 是不一样的
一个分支匹配上了就不会去管后面的分支。好像if(a || b)
4、分组:()
(\d{1,3}){3}\d{3}:这个正则表达式的意思就是把我们分组的小括号里面的东西重复三次,也就是说我们至少匹配3个最多匹配9个数字,后面再加上三个数字
5.反义字符:可以理解为if条件中的!非运算。
6、转义字符
如果你想要得到元字符本身的话需要使用“\”来取消这些元字符的特殊意义
有以下特殊字符需要转义: * . ? + $ ^ [ ] ( ) { } | \ /
在线测试工具:http://tool.chinaz.com/regex/
C#中简单用法:
l Regex. IsMatch用法
//简单匹配某单词
Console.WriteLine("\n\nIsMatch演示:");
Regex reg = new Regex("aaron");
Console.WriteLine(string.Format("result1: {0}", reg.IsMatch("my name is aaron."))); //True
Console.WriteLine(string.Format("result2: {0}", reg.IsMatch("my name is arron."))); //False
//默认是区分大小写的,所以下面2个会返回不同的结果
Console.WriteLine(string.Format("result3: {0}", Regex.IsMatch("my name is aaron.", "Aaron"))); //False
Console.WriteLine(string.Format("result4: {0}", Regex.IsMatch("my name is arron.", "aaron"))); //False
//这个是不区分大小写的
Console.WriteLine(string.Format("result3: {0}", Regex.IsMatch("my name is aaron.", "Aaron", RegexOptions.IgnoreCase))); //True
l Regex. Replace用法
简单替换某单词
//简单替换某单词
Console.WriteLine("\n\nReplace演示:");
reg=new Regex("r");
Console.WriteLine(string.Format("result4: {0}", reg.Replace("my name is arron.", "R"))); //my name is aRRon.
Console.WriteLine(string.Format("result4: {0}", reg.Replace("my name is arron.", "R", 1)));//只进行一次替换 //my name is aRron.
l Regex.Match用法
//**********************Match用法*****************************
Console.WriteLine("\n\nMatch演示:");
reg = new Regex("aa...");//开头2个字母必须是aa,并且后面跟任意3个字符
Match m=reg.Match("my name is aaron, aaRON, Aaron");
while(m.Success)
{
Console.WriteLine(m.Value);
m = m.NextMatch();
//这里由于默认是区分大小写的,所以
// aaron 是Match的
// aaRON 也是Match的
// Aaron 不会Match
}
l Regex.Matchs用法
//******************MatchsCollection用法***********************
Console.WriteLine("\n\nMatchsCollection演示:");
MatchCollection mc = Regex.Matches("my name is aaron, aaRON, Aaron", "aa...");//开头2个字母必须是aa,并且后面跟任意3个字符
Console.WriteLine(string.Format("found: {0}", mc.Count));
基础篇:
1、元字符:https://msdn.microsoft.com/zh-cn/library/ae5bf541(v=vs.90).aspx
限定符 | 描述 | 模式 |
. | 匹配出换行符以外的任意字符 | \d*\.\d |
\w | 匹配字母、数字、下划线、汉字 | "be+" |
\s | 匹配任意空白符 | "rai?n" |
\d | 匹配数字 | ",\d{3}" |
\b | 匹配单词开始或结束,它只是匹配一个位置 | "\d{2,}" |
^ | 匹配字符串开始 | "\d{3,5}" |
$ | 匹配字符串结束 | "\d{3,5}" |
代码/语法 | 说明 |
* | 重复0次或多次 |
+ | 重复一次或多次 |
? | 重复零次或1次 |
{n} | 重复n次 |
{n,} | 重复至少n次 |
{n,m} | 重复至少n次,但不多于m次 |
一个分支匹配上了就不会去管后面的分支。好像if(a || b)
4、分组:()
(\d{1,3}){3}\d{3}:这个正则表达式的意思就是把我们分组的小括号里面的东西重复三次,也就是说我们至少匹配3个最多匹配9个数字,后面再加上三个数字
5.反义字符:可以理解为if条件中的!非运算。
\W | 匹配任意一个不是字母或数字下划线或汉字的字符 |
\S | 匹配任意一个不是空白符的字符 |
\D | 匹配不是数字的字符 |
\B | 匹配不是单词开头或者结尾的位置 |
[^X] | 匹配除了X以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
如果你想要得到元字符本身的话需要使用“\”来取消这些元字符的特殊意义
有以下特殊字符需要转义: * . ? + $ ^ [ ] ( ) { } | \ /
相关文章推荐
- C#将图片和字节流互相转换并显示到页面上
- 控制随机抽中几率 [ C# | Random ]
- C#自定义控件添加右键菜单的方法
- 3、C#面向对象:封装、继承、多态、String、集合、文件(下)
- C#商品金额大小写转换
- AllanCodeMaker 代码生成器 release0.9.0 下载 支持C#,Java,可自订模板
- C#获取多维数组的行数与列数
- C#实现Menu和ContextMenu自定义风格及contextMenu自定义
- C#调用Axis2发布的带SoapHeader用户验证的WebService(通过测试)
- C#日期时间格式化
- 第四个C#工作流实例--构建流程图工作流
- 第一个C#工作流
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_8.1实例构造器和类A
- c#之webapi
- C#的零星基础
- 2、C#面向对象:封装、继承、多态、String、集合、文件(上)
- C#中多屏现实--Screen类的使用
- C#中多屏现实--Screen类的使用
- C#动态操作DataTable(新增行、列、查询行、列等)
- c# DataGridView控件使用