c#正则表达式--环视
2015-10-29 16:41
405 查看
网上有一篇文章写的很好。请参见 正则表达式之环视 。现将自己的理解记录下来。
环视(lookaround)可以理解为限定条件。即字符串中,某个字符左边或右边能出现什么,不能出现什么。只是一个限定。从英文lookaround字面理解,因为英文是二维的,可以理解为看看左边和右边的情况。再匹配。
1、正则中开启环视
用小括号,?来开启一个环视。
2、代码理解
例子1:字符右边限定 (顺序环视)
例子2:字符左右边同时限定(逆序和顺序环视)
例子3:数字格式化成用“,”的货币格式。
环视(lookaround)可以理解为限定条件。即字符串中,某个字符左边或右边能出现什么,不能出现什么。只是一个限定。从英文lookaround字面理解,因为英文是二维的,可以理解为看看左边和右边的情况。再匹配。
1、正则中开启环视
用小括号,?来开启一个环视。
表达式 | 说明 |
(?<=Expression) | 逆序肯定环视,表示所在位置左侧能够匹配Expression |
(?<!Expression) | 逆序否定环视,表示所在位置左侧不能匹配Expression |
(?=Expression) | 顺序肯定环视,表示所在位置右侧能够匹配Expression |
(?!Expression) | 顺序否定环视,表示所在位置右侧不能匹配Expression |
例子1:字符右边限定 (顺序环视)
#region 环视 匹配除<p>或</p>之外的其余标签。 string str = "aa<p>one</p>bb<div>two</div>cc"; //开启一个顺序否定环视。 "<"字符右边不能出现"/?p\b)"即"p"和"/p"。 MatchCollection m = Regex.Matches(str, @"<(?!/?p\b)[^>]+>"); for (int i = 0; i < m.Count; i++) { MessageBox.Show(m[i].Value); //结果<div>和</div> } #endregion
例子2:字符左右边同时限定(逆序和顺序环视)
#region string str = "aa<p>one</p>bb<div>two</div>cc"; MatchCollection m = Regex.Matches(str, @"(?<=<div>)[^<]+(?=</div>)"); for (int i = 0; i < m.Count; i++) { MessageBox.Show(m[i].Value); //结果two } #endregion
例子3:数字格式化成用“,”的货币格式。
相关文章推荐
- C#实现图片文件到数据流再到图片文件的转换 --转
- C# 给PDF文件添加水印
- C#状态模式——解决方法过长问题
- 揭开你的面纱----C#.net初识
- C# ListBox 控件
- c# combobox属性dropdownlist赋值
- (转自博客园-雲霏霏)5天玩转C#并行和多线程编程 —— 第三天 认识和使用Task
- c# 开发CAD 只初始化窗口一次,并修改其内的数据
- C# ListView用法详解
- C# 之 DataReader 和 DataSet 的区别
- winform 自定义控件-按钮
- C#获取当前页面的url
- C# 检测程序是否已经运行
- C#实现Excel模板导出和从Excel导入数据
- C#中get和set
- 黄聪:C#超级延时方法,延迟系统时间但系统又能同时能执行其它任务
- C#冒泡排序
- C# 关于用7zip压缩文件提示win32exception 系统找不到文件解决方案(win7 x64)
- 2.C# Thread初识
- C#语句先后顺序对程序的结果有影响吗