c#正则表达式详解[通俗易懂]

c#正则表达式详解[通俗易懂]正则表达式网上的文章很多,这里我参照网上的文章,并根据自己的理解总结出比较完整的C#正则表达式的基础知识:引用文章——http://www.wangqi.com/n9250c53.aspx一、正则表达式基础知识以下基础知道是通用的,对于c#,java,js等语言  在正则表达式中拥有一套自己的语法规则,常见语法包括;字符匹配、重复匹配、字符定位、转义匹配和其

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

正则表达式网上的文章很多,这里我参照网上的文章,并根据自己的理解总结出比较完整的C#正则表达式的基础知识:

引用文章——http://www.wangqi.com/n9250c53.aspx


一、正则表达式基础知识

以下基础知道是通用的,对于c#,java,js等语言


    在正则表达式中拥有一套自己的语法规则,常见语法包括;字符匹配、重复匹配、字符定位、转义匹配和其他高级语法(字符分组、字符替换和字符决策);


    字符匹配语法:

字符语法 语法解释 语法例子
\d 匹配数字(0~9) ‘\d’匹配8,不匹配12;
\D 匹配非数字 ‘\D’匹配c,不匹配3;
\w 匹配任意单字符 ‘\w\w’ 匹配A3,不匹配@3;
\W 匹配非单字符 ‘\W’匹配@,不匹配c;
\s 匹配空白字符 ‘\d\s\d’匹配3 d,不匹配abc;
\S 匹配非空字符 ‘\S\S\S’匹配A#4,不匹配3 d;
. 匹配任意字符 ‘….’匹配A$ 5,不匹配换行;
[…] 匹配括号中任意字符 [b-d]匹配b、c、d, 不匹配e;
[^…] 匹配非括号字符 [^b-z]匹配a,不匹配b-z的字符;


    重复匹配语法:

重复语法 语法解释 语法例子
{n} 匹配n次字符 \d{3}匹配\d\d\d,不匹配\d\d或\d\d\d\d
{n,} 匹配n次和n次以上 \w{2}匹配\w\w和\w\w\w以上,不匹配\w
{n,m} 匹配n次上m次下 \s{1,3}匹配\s,\s\s,\s\s\s,不匹配\s\s\s\s
? 匹配0或1次 5?匹配5或0,不匹配非5和0
+ 匹配一次或多次 \S+匹配一个以上\S,不匹配非一个以上\S
* 匹配0次以上 \W*匹配0以上\W,不匹配非N*\W


    字符定位语法:

重复语法 语法解释 语法例子
^ 定位后面模式开始位置  
$ 前面模式位于字符串末端  
\A 前面模式开始位置  
\z 前面模式结束位置  
\Z 前面模式结束位置(换行前)  
\b 匹配一个单词边界  
\B 匹配一个非单词边界  


    转义匹配语法:

转义语法 涉及字符(语法解释) 语法例子
“\”+实际字符 \ . * + ? | ( ) { }^ $ 例如:\\匹配字符“\”
\n 匹配换行  
\r 匹配回车  
\t 匹配水平制表符  
\v 匹配垂直制表符  
\f 匹配换页  
\nnn 匹配一个8进制ASCII  
\xnn 匹配一个16进制ASCII  
\unnnn 匹配4个16进制的Uniode  
\c+大写字母 匹配Ctrl-大写字母 例如:\cS-匹配Ctrl+S

二、涉及的基本的类


    正则表达式在英文中写作(Regular Expression),根据正则表达式的使用范围和单词意思,.NET将其命名空间设置为System.Text.RegularExpressions;


    在该命名空间内包括了8个基本的类:Capture、CaptureCollection、Group、GroupCollection、Match、MatchCollection、Regex和RegexCompilationInfo如图1所示;

Capture 用于单个表达式捕获结果
CaptureCollection 用于一个序列进行字符串捕获
Group 表示单个捕获的结果
GroupCollection 表示捕获组的集会
Match 表示匹配单个正则表达式结果
MatchCollection 表示通过迭代方式应用正则表达式到字符串中
Regex 表示不可变的正则表达式
RegexCompilationInfo 将编译正则表达式需要提供信息

这几个基本的类关系如下:

c#正则表达式详解[通俗易懂]

三、常用方法

Regex类构造方法:

  • 基本形式Regex(string pattern);
  • 重载形式Regex(string pattern,RegexOptions);


    补充:RegexOptions属于枚举类型,包括IgnoreCase(忽略大小写)、ReghtToLeft(从右向左)、None(默认)、CultureInvariant(忽略区域)、Multline(多行模式)和SingleLine(单行模式);


正则表达式的常用方法有IsMatch、Match、Matches、Replace、Split,它们都包含有静态方法和实例方法

1、IsMatch

进行简单的匹配,并返回布尔值:是否匹配成功

2、Match、Matches

Matches:返回多个匹配的结果MatchCollection

Match:返回单个匹配的结果Match

3、Replace、Split

字符串对象的方法里默认就有这2个,而且用法差不多,实际应用中用处不大,这里不再累述

四、分组的应用

根据Capture、Group、Match的关系,我们知道一个正则表达可能匹配出多个结果Match,而匹配的结果可以从属性Value得到,那么Group有什么用呢

用处就在于提取某一部分字符串,比如我们要提取2个固定字符串中间的值:

例子:提取一段xml中标签a中的值

xml:

<xml><a>123</a></xml>

Jetbrains全家桶1年46,售后保障稳定

C#代码:

            Regex a = new Regex(@"<a>(.*)</a>");            Match m= a.Match(@"            <xml>            <a>123</a>            </xml>            ");            MessageBox.Show(m.Groups[1].Value.ToString());

如果要获取多个匹配的结果可以用Matches得到MatchCollection

五、常用实例

验证数字:”^[0-9]*$”
验证字母:”^[A-Za-z]+$”。
验证邮件:”^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$”
验证汉字:”^[\u4e00-\u9fa5]{0,}$”

电话号码:^(\d{3,4}-)?\d{6,8}$

手机号码:^[1]+[3,5]+\d{9}$

身份证号码:(^\d{18}$)|(^\d{15}$)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/210092.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • docker部署mysql的坏处_docker创建mysql数据库

    docker部署mysql的坏处_docker创建mysql数据库首先,确认创建容器的时候添加了-d参数,以守护进程的方式运行容器。或者,之前容器能够正常启动,突然启动不了,可以参考下面的解决方案。使用free命令查看内存状态[root@VM-16-15-centos~]#freetotalusedfreesharedbuff/cacheavailableMem:38263362077648504884220812

  • SpringBoot——创建SpringBoot项目HelloWorld

    SpringBoot——创建SpringBoot项目HelloWorldSpringBoot——创建SpringBoot项目HelloWorld

  • xml xsi_schema和scheme关系

    xml xsi_schema和scheme关系摘要:相信很多人和我一样,在编写Spring或者Maven或者其他需要用到XML文档的程序时,通常都是将这些XML文档头拷贝过来,并没有理解其中元素(比如xmlns,xmlns:xsi,xsi:s

  • 什么?女朋友生气哄不好?那是你没有这款神器!

    什么?女朋友生气哄不好?那是你没有这款神器!在一个阳光明媚的周日,我打开窗户呼吸了一口新鲜空气。阳光灿烂,岁月静好,又是一个约女朋友出去爬山吃饭看电影的好日子。想到女朋友的大眼睛,我脸上不禁洋溢起了幸福的微笑。打开微信,给女朋友发出去一个美好

  • SAPI5_SAP-ERP

    SAPI5_SAP-ERP转载自:http://blog.csdn.net/stone0823/article/details/70339694SAPWebIDE是基于Eclipse内核的在线开发IDE,可以使用在线的试用版本,但服务器在德国,访问的网速特别慢。也可以使用PersonalEdition,在本机启动和编写代码。与Eclipse相比,SAPWebIDE有几个

    2022年10月17日
  • OpenCV—python 颜色直方图与直方图均衡化[通俗易懂]

    OpenCV—python 颜色直方图与直方图均衡化[通俗易懂]一、读取图片并展示:颜色直方图OpenCV-Python中调用的直方图计算函数为cv2.calcHist。&quot;&quot;&quot;hist=cv2.calcHist([image],#传入图像(列表)[0],#使用的通道(使用通道:可选[0],[1],[2])…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号