C#中利用正则表达式实现字符串搜索

C#中利用正则表达式实现字符串搜索,第1张

C#中利用正则表达式实现字符串搜索,第2张

1.正则表达式简介

正则表达式提供了强大、灵活和有效的方法来处理文本。正则表达式的综合模式匹配表示,可以快速分析大量文本,找到特定的字符模式;提取、编辑、替换或删除文本子串;或者将提取的字符串添加到集合中以生成报告。正则表达式是许多处理字符串的应用程序不可缺少的工具,例如HTML处理、日志文件分析和HTTP头分析。

的。NET framework正则表达式合并了其他正则表达式实现的最常见函数,并且设计为与Perl 5正则表达式兼容。的。NET framework正则表达式还包括一些其他实现中没有提供的功能。的。NET framework正则表达式类是基类库的一部分,可以与面向公共语言运行库的任何语言或工具一起使用。

2.字符串搜索

正则表达式语言由两种基本字符类型组成:文本字符和元字符。元字符为正则表达式提供了处理能力。目前所有的文本编辑器都有一些搜索功能。通常,您可以打开一个对话框,并在其中一个文本框中键入要定位的字符串。如果要同时执行替换操作,可以键入替换字符串。比如Windows操作系统中的记事本,Office系列中的文档编辑器都有这个功能。这是最简单的搜索方式。这类问题可以通过String类的String.replace()方法轻松解决,但是如果需要在文档中识别重复的,该怎么办?写一个从String类中选择重复单词的例程比较复杂,这个时候用language非常合适。

通用表达式语言是一种可以编写搜索表达式的语言。在这种语言中,可以在文档中组合要搜索的文本、转义序列和其他具有特定含义的字符。例如,序列\b表示单词的开始和结束(子边界)。如果你想指出你正在寻找的以字符th开始的单词,你可以写一般表达式\bth(即序列字符边界是-t-h)。如果要搜索所有以th结尾的单词,可以写th\b(序列t-h-单词边界)。然而,一般表达式要比这复杂得多。例如,您可以在搜索操作中找到存储部分文本的工具。

3.的正则表达式类。NET框架

通过引入。NET框架下,我们可以熟悉正则表达式的用法。NET框架。

3.1 regex类表示一个只读的正则表达式

Regex类包含各种静态方法,这些方法允许使用其他正则表达式类,而无需显式实例化其他类的对象。下面的代码示例创建Regex类的实例,并在初始化对象时定义一个简单的正则表达式。注意,一个附加的反斜杠被用作转义字符,它将匹配字符类中的反斜杠指定为文字字符。

regex r;//声明一个Regex类的变量
r = new Regex(" \ \ s 2000 ");//定义表达式

3.2 Match类表示正则表达式匹配操作的结果。

下面的示例使用Regex类的Match方法返回Match类型的对象,以在输入字符串中查找第一个匹配项。此示例使用Match类的Match.success属性来指示是否找到了匹配项。

Regex r = new Regex(" ABC ");//定义一个Regex对象实例
match m = r . match(" 123 AC 456 ");//匹配字符串中的
if(m . success)
{
console . writeline("在位置"+m.index处找到匹配项";//输入匹配字符的位置
}

3.3 MatchCollection类表示非重叠匹配的序列。

此集合是只读的,没有公共构造函数。正则表达式返回MatchCollection的实例。匹配属性。使用Regex类的Matches方法用输入字符串中找到的所有匹配项填充MatchCollection。下面的代码示例演示如何将集合复制到一个字符串数组(保存每个匹配项)和一个整数数组(指示每个匹配项的位置)。

MatchCollection mc
String[]results = new String[20];
int[]match position = new int[20];
Regex r = new Regex(" ABC ");//定义一个Regex对象实例
MC = r . matches(" 123 ABC 4 ABCD ");
for(int I = 0;我< mc。数数;++)//查找输入字符串中的所有匹配项
{
results [i] = mc [i]。价值;//将匹配的字符串添加到字符串数组
matchposition [i] = mc [i]。指数;//记录匹配字符的位置
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C#中利用正则表达式实现字符串搜索

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情