预搜索基本概念案例分析
2012-03-31 14:17
302 查看
string x = "used:10246 free:20489";
Regex r = new Regex(@"(?<!used:)\d{4}");
Console.WriteLine();
Console.WriteLine("string:{0} \npatten:{1}", x, r);
//第一次匹配“sed:10246",其中反向负声明匹配为:”sed:1",后面的数字为匹配返回结果
//第二次匹配"free:2048",其中反向负声明匹配为:”free:",后面的数字为匹配返回结果
//包含两个匹配的结果:0246,2048
MatchCollection mc = r.Matches(x);
foreach (Match m in mc)
{
Console.WriteLine("index:{0}, Value:{1},length:{2}", m.Index, m.Value, m.Length);
}
r = new Regex(@"\d{4}(?<!used:)");
Console.WriteLine();
Console.WriteLine("string:{0} \npatten:{1}", x, r);
//该正在表达式可替换为@"\d{4}",因为符合该条件的内容边界点的左侧肯定不是"used:"。
//包含两个匹配的结果:1024,2048
mc = r.Matches(x);
foreach (Match m in mc)
{
Console.WriteLine("index:{0}, Value:{1},length:{2}", m.Index, m.Value, m.Length);
}
r = new Regex(@"(?!used:)\d{4}");
Console.WriteLine();
Console.WriteLine("string:{0} \npatten:{1}", x, r);
//r = new Regex(@"\d{4}");
//该处的表达式与"\d{4}"等价,匹配项左边界的右边为4个数字,肯定不是"used:"。
//包含两个匹配的结果:1024,2048
mc = r.Matches(x);
foreach (Match m in mc)
{
Console.WriteLine("index:{0}, Value:{1},length:{2}", m.Index, m.Value, m.Length);
}
r = new Regex(@"\d{4}(?!used:)");
Console.WriteLine();
Console.WriteLine("string:{0} \npatten:{1}", x, r);
//该表达式表示匹配项右边界的右边不能为"used:",
//包含两个匹配的结果:1024,2048
mc = r.Matches(x);
foreach (Match m in mc)
{
Console.WriteLine("index:{0}, Value:{1},length:{2}", m.Index, m.Value, m.Length);
}
x = "aaa ffffff 999999999";
r = new Regex(@"(\w)((?=\1\1\1)(\1))+");
Console.WriteLine();
Console.WriteLine("string:{0} \npatten:{1}", x, r);
//匹配结果为:ffff,9999999
mc = r.Matches(x);
foreach (Match m in mc)
{
Console.WriteLine("index:{0}, Value:{1},length:{2}", m.Index, m.Value, m.Length);
}
Regex r = new Regex(@"(?<!used:)\d{4}");
Console.WriteLine();
Console.WriteLine("string:{0} \npatten:{1}", x, r);
//第一次匹配“sed:10246",其中反向负声明匹配为:”sed:1",后面的数字为匹配返回结果
//第二次匹配"free:2048",其中反向负声明匹配为:”free:",后面的数字为匹配返回结果
//包含两个匹配的结果:0246,2048
MatchCollection mc = r.Matches(x);
foreach (Match m in mc)
{
Console.WriteLine("index:{0}, Value:{1},length:{2}", m.Index, m.Value, m.Length);
}
r = new Regex(@"\d{4}(?<!used:)");
Console.WriteLine();
Console.WriteLine("string:{0} \npatten:{1}", x, r);
//该正在表达式可替换为@"\d{4}",因为符合该条件的内容边界点的左侧肯定不是"used:"。
//包含两个匹配的结果:1024,2048
mc = r.Matches(x);
foreach (Match m in mc)
{
Console.WriteLine("index:{0}, Value:{1},length:{2}", m.Index, m.Value, m.Length);
}
r = new Regex(@"(?!used:)\d{4}");
Console.WriteLine();
Console.WriteLine("string:{0} \npatten:{1}", x, r);
//r = new Regex(@"\d{4}");
//该处的表达式与"\d{4}"等价,匹配项左边界的右边为4个数字,肯定不是"used:"。
//包含两个匹配的结果:1024,2048
mc = r.Matches(x);
foreach (Match m in mc)
{
Console.WriteLine("index:{0}, Value:{1},length:{2}", m.Index, m.Value, m.Length);
}
r = new Regex(@"\d{4}(?!used:)");
Console.WriteLine();
Console.WriteLine("string:{0} \npatten:{1}", x, r);
//该表达式表示匹配项右边界的右边不能为"used:",
//包含两个匹配的结果:1024,2048
mc = r.Matches(x);
foreach (Match m in mc)
{
Console.WriteLine("index:{0}, Value:{1},length:{2}", m.Index, m.Value, m.Length);
}
x = "aaa ffffff 999999999";
r = new Regex(@"(\w)((?=\1\1\1)(\1))+");
Console.WriteLine();
Console.WriteLine("string:{0} \npatten:{1}", x, r);
//匹配结果为:ffff,9999999
mc = r.Matches(x);
foreach (Match m in mc)
{
Console.WriteLine("index:{0}, Value:{1},length:{2}", m.Index, m.Value, m.Length);
}
相关文章推荐
- OpenStack Keystone (1) : 基本概念及其组织结构关系与案例分析
- 机器视觉中的blob分析基本概念
- 信号完整性分析系列——1基本概念
- Spring AOP分析(1) -- 基本概念
- 集合框架_用户登录注册案例详细分析和分包的实现、用户基本描述类和用户操作接口的实现、用户操作类的具体实现、用户测试类的实现、加入猜数字小游戏
- osworkflow基础入门部分汇总(基本概念,包用途分析及代码片断,表结构分析,主要优势,核心概念)
- 数据结构基本概念及算法和算法分析 -- 引自《新编数据结构习题与解析》(李春葆等著)
- MapReduce 之 倒排索引 基本概念、设计思路和源码分析
- 026 使用大数据对网站基本指标PV案例的分析
- 【数据分析】数据挖掘基本概念
- TimeQuest定时分析的基本概念
- Gstreamer的一些基本概念与A/V同步分析
- 机器视觉中的blob分析基本概念
- Gstreamer的一些基本概念与A/V同步分析(转载)
- Elasticsearch学习之深入聚合分析一---基本概念
- 【分析】Ceph系统架构与基本概念
- Eclipse 工作台基本概念>搜索视图
- HDFS原理分析:基本概念(简单易懂)
- 时序分析之基本概念
- 网络分析之基本概念篇