数据结构与算法C#语言描述第八章模式匹配和文本处理

第八章 模式匹配和文本处理 尽管String类和StringBuilder类提供了一套方法用来处理基于字符串的数据,但是RegEx和它的支持类却为字符串处理任务提供了更强大的功能。 8.1 正则表达式概述 所谓正则表达式是一种用于描述字符字符串中字符格式的语言,它提供了对应于重复字符,替换字符以及分组字符的描述符。正则表达式既可以用来执行字符串的搜索,也可以用于字符串的替换。 概述:使用正则表达式 为了使用正则表达式,需要把RegEx类引入程序。大家可以在System.Text.RegularExpression名字域中找到这个类。 class Chapter8 { static void Main() { Regex reg = new Regex("the"); string str1 = "the quick brown fox jumped over the lazy dog"; MatchCollection matchSet; //Match matchSet; //int matchPos; matchSet = reg.Matches(str1); //if (matchSet.Success) //{ // matchPos = matchSet.Index; // Console.WriteLine("found match at position:"+matchPos); //} if (matchSet.Count > 0) foreach (Match aMatch in matchSet) Console.WriteLine("found a match at:" + aMatch.Index); Console.Read(); } String s =”the quick brown fox jumped over the brown dog”; S = Regex.Replace(s,”brown”,”black”); 8.2 数量词 static void Main() { string[] words = new string[] { "bad", "boy", "baaad", "bear", "bend" }; foreach (string word in words) if (Regex.IsMatch(word, "ba+")) Console.WriteLine(word); } + 说明正则表达式应该匹配一个或多个紧接其前的字符。 * 说明正则表达式应该匹配零个或多个紧接其前的字符 ? 是一种精确匹配零次或一次的数量词 {n} n是要找到的匹配数量 {n,m} n表示匹配的最小值而m表示最大值 {1,}说明至少要有一个匹配。 8.3 使用字符类 static void Main() { string str1 = "the quick brown fox jumped over the lazy dog"; MatchCollection matchSet; matchSet = Regex.Matches(str1, "."); foreach (Match aMatch in matchSet) Console.WriteLine("matches at:"+aMatch.Index); } 句点可以匹配字符串中的每一个单独字符。 [a-z],[0-9],(^) 可以把[0-9]写成/d,[^0-9]写成/D 8.4 用断言修改正则表达式 (^)只能在字符串或者行的开始处找到匹配。 ($)只能在行的末尾处找到匹配 (/b)只能发生在单词的边缘,这就意味着匹配只能发生在用空格分隔的单词的开始或结束处。 8.5 使用分组构造 8.5.1 匿名组 (//s//d{2}//s) 8.5.2 命名组 (? //s//d{2}//s) Console.WriteLine(“Date:{0}”,aMatch.Groups[“dates”]; 8.5.3 零宽度正向预搜索断言和零宽度反向预搜索断言 断言还可以用来确定正则表达式向前或向后搜索到匹配的程度。 8.6 CaptureCollection 类 8.7 正则表达式的选项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值