C#regex是正则表达式类
用于string的处理,查找匹配的字符串。
1,先看一个例子
Regex regex=new Regex(@”OK“);//我们要在目标字符串中找到"OK"
Match m=regex.Match("fjsladfOK");
console.writeline(m.tostring());//这是查找OK
//结果是:OK
2,
Regex regex=new Regex(@"\d+");// \d+是代表数字
Match m=regex.Math("jflsadkj 98");
console.writeline(m.tostring);//结果为98
3,关键为如何写特殊字符
”\w+"代表字母 "\W+"代表字符 "\s+" 代表空格 "$"代表字符串结束了
4,
关于零宽度断言有多种叫法,也有叫环视、也有叫预搜索的,我这里采用的是 MSDN 中的叫法,关于零宽度断言有以下几种:
(?= 子表达式 ): 零宽度正预测先行断言。仅当子表达式在此位置的右侧匹配时才继续匹配。例如, 19(?=99) 与跟在 99 前面的 19 实例匹配。
(?! 子表达式 ): 零宽度负预测先行断言。仅当子表达式不在此位置的右侧匹配时才继续匹配。例如, (?!99) 与不以99 结尾的单词匹配,所以不与 1999 匹配。
(?<= 子表达式 ): 零宽度正回顾后发断言。仅当子表达式在此位置的左侧匹配时才继续匹配。例如, (?<=19)99与跟在 19 后面的 99 的实例匹配。此构造不会回溯。
(?<! 子表达式 ): 零宽度负回顾后发断言。仅当子表达式不在此位置的左侧匹配时才继续匹配。例如 (?<!19) 与不以 19 开头的单词匹配,所以不与 1999 匹配。
eg:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace 正则表达式
{
class Program
{
static void Main(string[] args)
{
string p = @"(^\[)([a-z]{1})(\d+)([a-z])(\s+)(?=\])";
string text = "[s434b ]jf";
Regex regex = new Regex(p, RegexOptions.IgnoreCase);
MatchCollection mc = regex.Matches(text);
foreach (Match ma in mc)
{
for (int k = 0; k < ma.Groups.Count; k++)
{
Console.WriteLine("match groud{0} :{1}", k, ma.Groups[k].Value);
}
}
Console.Read();
}
}
}
搜索出来的结果并没有“】” ,所以这个就说明“零宽度断言”仅仅是个条件
5,
正则表达式元字符
正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。元字符使正则表达式具有处理 能力。元字符既可以是放在 [] 中的任意单个字符(如 [a] 表示匹配单个小写字符 a ),也可以是字符序列(如 [a-d] 表示匹配 a 、 b 、 c 、 d 之间的任意一个字符,而 \w 表示任意英文字母和数字及下划线),下面是一些常见的元字符:
元字符 |
说明 |
. |
匹配除 \n 以外的任何字符(注意元字符是小数点)。 |
[abcde] |
匹配 abcde 之中的任意一个字符 |
[a-h] |
匹配 a 到 h 之间的任意一个字符 |
[^fgh] |
不与 fgh 之中的任意一个字符匹配 |
\w |
匹配大小写英文字符及数字 0 到 9 之间的任意一个及下划线,相当于 [a-zA-Z0-9_] |
\W |
不匹配大小写英文字符及数字 0 到 9 之间的任意一个,相当于 [^a-zA-Z0-9_] |
\s |
匹配任何空白字符,相当于 [ \f\n\r\t\v] |
\S |
匹配任何非空白字符,相当于 [^\s] |
\d |
匹配任何 0 到 9 之间的单个数字,相当于 [0-9] |
\D |
不匹配任何 0 到 9 之间的单个数字,相当于 [^0-9] |
[\u4e00-\u9fa5] |
匹配任意单个汉字(这里用的是 Unicode 编码表示汉字的 ) |
正则表达式限定符
上面的元字符都是针对单个字符匹配的,要想同时匹配多个字符的话,还需要借助限定符。下面是一些常见 的限定符 ( 下表中 n 和 m 都是表示整数,并且 0<n<m) :
限定浮 |
说明 |
* |
匹配 0 到多个元字符,相当于 {0,} |
? |
匹配 0 到 1 个元字符,相当于 {0,1} |
{n} |
匹配 n 个元字符 |
{n,} |
匹配至少 n 个元字符 |
{n,m} |
匹配 n 到 m 个元字符 |
+ |
匹配至少 1 个元字符,相当于 {1,} |
\b |
匹配单词边界 |
^ |
字符串必须以指定的字符开始 |
$ |
字符串必须以指定的字符结束 |
说明:
( 1 )由于在正则表达式中“ \ ”、“ ? ”、“ * ”、“ ^ ”、“ $ ”、“ + ”、“(”、“)”、“ | ”、“ { ”、“ [ ”等字符已经具有一定特殊意义,如果需要用它们的原始意义,则应该对它进行转义,例如希 望在字符串中至少有一个“ \ ”,那么正则表达式应该这么写: \\+ 。
( 2 )可以将多个元字符或者原义文本字符用括号括起来形成一个分组,比如 ^(13)[4-9]\d{8}$ 表示任意以 13开头的移动手机号码。
( 3 )另外对于中文字符的匹配是采用其对应的 Unicode 编码来匹配的,对于单个 Unicode 字符,如 \u4e00 表示汉字“一”, \u9fa5 表示汉字“龥”,在 Unicode 编码中这分别是所能表示的汉字的第一个和最后一个的 Unicode 编码,在 Unicode 编码中能表示 20901 个汉字。
( 4 )关于 \b 的用法,它代表单词的开始或者结尾,以字符串“ 123a 345b 456 789d ”作为示例字符串,如果正则表达式是“ \b\d{3}\b ”,则仅能匹配 456 。
( 5 )可以使用“ | ”来表示或的关系,例如 [z|j|q] 表示匹配 z 、 j 、 q 之中的任意一个字母。
(以上内容参考http://blog.csdn.net/zhoufoxcn/archive/2010/03/12/5372420.aspx)
正则表达式,Regex类的更多相关文章
-
C#正则表达式Regex类的用法
C#正则表达式Regex类的用法 更多2014/2/18 来源:C#学习浏览量:36891 学习标签: 正则表达式 Regex 本文导读:正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串, ...
-
C#正则表达式Regex类
C#正则表达式Regex类的使用 C#中为正则表达式的使用提供了非常强大的功能,这就是Regex类.这个包包含于System.Text.RegularExpressions命名空间下面,而这个命名空间 ...
-
C#正则表达式Regex类使用
作为文本处理的利器——Perl语言对正则表达式的最强大支持起到了重要的作用,正因为如此,许多其他语言在加入正则表达式引擎的时候都会或多或少的兼顾perl风格的正则表达式,开发出相应的引擎.本人使用pe ...
-
C#正则表达式Regex类的介绍
一.在C#中,要使用正则表达式类,请在源文件开头处添加以下语句: using System.Text.RegularExpressions; 二.RegEx类常用的方法 1.静态Match方法 使用静 ...
-
C#正则表达式Regex类的使用
C#中为正则表达式的使用提供了非常强大的功能,这就是Regex类.这个包包含于System.Text.RegularExpressions命名空间下面,而这个命名空间所在DLL基本上在所有的项目模板中 ...
-
(转)C#正则表达式Regex类的用法
原文地址如下:http://www.studyofnet.com/news/297.html 一.C#正则表达式符号模式 字 符 描 述 \ 转义字符,将一个具有特殊功能的字符转义为一个普通字符,或反 ...
-
用Regex类计算一个字符串出现次数是最好方法【转载】
我的一个朋友问我,怎么在c#或vb.net中,计算一个字符串中查找另一个字符串中出现的次数,他说在网上打了好多方法,我看了一下,有的是用replace的方法去实现,这种方法不是太好,占资源太大了.其实 ...
-
C#正则表达式编程(二):Regex类用法
上一篇讲述了在C#中有关正则表达式的类之间的关系,以及它们的方法,这一篇主要是将Regex这个类的用法的,关于Match及MatchCollection类会在下一篇讲到.对于正则表达式的应用,基本上可 ...
-
C#正则表达式Regex常用匹配
使用Regex类需要引用命名空间:using System.Text.RegularExpressions; 利用Regex类实现验证 示例1:注释的代码所起的作用是相同的,不过一个是静态方法,一个是 ...
-
关于C#正则表达式MatchCollection类的总结,正则表达式的应用
认识MatchCollection 类 表示通过以迭代方式将正则表达式模式应用于输入字符串所找到的成功匹配的集合. 命名空间: System.Text.RegularExpressions 属性:C ...
随机推荐
-
学习Scala第一篇-从hello World开始
最近开始系统性的学习scala.其实之前使用过scala的,比如我在用Gatling这款性能测试工具的时候就接触到了scala了.Gatling本身就是用Scala写的,而且Gatling的性能测试配 ...
-
PyMySQL Evaluation
PyMySQL Evaluation This page will capture issues related to Openstack moving to the PyMySQL driver f ...
-
解决Python往MySQL插入中文时报错的问题
今天遇到一个问题,用Python往MySQL插入数据时,若数据中包含中文会报类似下面的错误: ERROR 1366: Incorrect string value: '\xE4\xB8\xAD\xE5 ...
-
会话标识未更新(AppScan扫描结果)
最近工作要求解决下web的项目的漏洞问题,扫描漏洞是用的AppScan工具,其中此篇文章是关于会话标识未更新问题的.下面就把这块东西分享出来. 原创文章,转载请注明 ----------------- ...
-
06链队列_LinkQueue--(栈与队列)
#include "stdio.h" #include "stdlib.h" #include "io.h" #include " ...
-
IOS开发之格式化日期时间的使用 &;&; 编程中常见问题
今天在做一个有关时间的一些开发的时候,遇见了一写问题,反正来说既是很简单的问题,但毕竟用了我一些时间去调错误,遂记录之. 本来是想用 NSDateFormat 来转换一下服务器返回的时间,然后在客户端 ...
-
C/C++基础知识总结——多态性
1. 多态性的概述 1.1 多态是指同样的消息被不同类型的对象接收时导致不同的行为.所谓消息是指对垒的成员函数的调用,不同行为是指不同的实现. 1.2 多态的实现 (1) 实现角度讲多态可分为两类:编 ...
-
iOS9以后 GDataXMLNode修改方式
iOS9以后GDataXMLNode修改方式
-
shell中的特殊变量和函数传参
shell中的特殊变量 $? :上一个命令的执行状态返回值 $#::参数的个数 $*:参数列表,所有的变量作为一个字符串 $@:参数列表,每个变量作为单个字符串 $1-9,${10}:位置参数 $$: ...
-
Node.js、npm、vue-cli 的安装配置环境变量
我安装node.js是为了学习vue,需要用到npm,所以就把node.js安装了,安装node.js会带有npm的安装. 在安装node.js之前,我们需要了解以下三个内容. npm: Nodejs ...