C#正则表达式之Regex类用法详解
|
Regex 类表示不可变(只读)的正则表达式。它还包含各种静态方法,允许在不显式创建其他类的实例的情况下使用其他正则表达式类。 正则表达式基础概述 什么是正则表达式 在编写字符串的处理程序时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 通常,我们在使用WINDOWS查找文件时,会使用通配符(*和?)。如果你想查找某个目录下的所有Word文档时,你就可以使用*.doc进行查找,在这里,*就被解释为任意字符串。和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求――当然,代价就是更复杂。 一、C#正则表达式符号模式
说明: 由于在正则表达式中“ ”、“ ? ”、“ * ”、“ ^ ”、“ $ ”、“ + ”、“(”、“)”、“ | ”、“ { ”、“ [ ”等字符已经具有一定特殊意义,如果需要用它们的原始意义,则应该对它进行转义,例如希 望在字符串中至少有一个“ ”,那么正则表达式应该这么写: + 。 二、在C#中,要使用正则表达式类,请在源文件开头处添加以下语句: 复制代码 代码如下: 三、RegEx类常用的方法 1、静态Match方法 使用静态Match方法,可以得到源中第一个匹配模式的连续子串。 静态的Match方法有2个重载,分别是 Regex.Match(string input,string pattern); 第一种重载的参数表示:输入、模式 第二种重载的参数表示:输入、模式、RegexOptions枚举的“按位或”组合。 RegexOptions枚举的有效值是: 注意:Multiline在没有ECMAScript的情况下,可以和Singleline连用。Singleline和Multiline不互斥,但是和ECMAScript互斥。 2、静态的Matches方法 这个方法的重载形式同静态的Match方法,返回一个MatchCollection,表示输入中,匹配模式的匹配的集合。 3、静态的IsMatch方法 此方法返回一个bool,重载形式同静态的Matches,若输入中匹配模式,返回true,否则返回false。 四、RegEx类的实例 1.字符串替换 例如我想把如下格式记录中的NAME值修改为WANG string line="ADDR=1234;NAME=ZHANG;PHONE=6789"; 修改后的字符串为 ADDR=1234;NAME=WANG;PHONE=6789 2.字符串匹配 例如我想提取刚才那条记录中的NAME值 Regex reg = new Regex("NAME=(.+);"); 3、Match实例3 文本中含有"speed=30.2mph",需要提取该速度值,但是速度的单位可能是公制也可能是英制,mph,km/h,m/s都有可能;另外前后可能有空格。 string line="lane=1;speed=30.3mph;acceleration=2.5mph/s"; 那么在返回的结果中match.Groups[1].Value将含有数值,而match.Groups[2].Value将含有单位。 4、再比如,解码gps的GPRMC字符串,只需 Regex reg = new Regex(@"^$GPRMC,[d.]*,[A|V],(-?[0-9]*.?[0-9]+),([NS]*),([EW]*),.*"); 就可以获得经度、纬度值,而以前需要几十行代码。 五、System.Text.RegularExpressions命名空间的说明 该名称空间包括8个类,1个枚举,1个委托。他们分别是: Capture: 包含一次匹配的结果; (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
