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}$)

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 面向对象的数据库db4o: 安装并使用db4o

    面向对象的数据库db4o: 安装并使用db4o为什么80%的码农都做不了架构师?>>>…

    2022年7月21日
    12
  • emgucv 抠图[通俗易懂]

    我的环境的KinectSDK2.0+EmguCV3.0.0依旧还是WinFrom和ImageBox因为需要用到BodyIndex的数据,但BodyIndex的分辨率和RGB图像的分辨率不同,所以需要用的CoordinateMap类中的坐标转换函数。然后直接对colorimage的像素点进行操作。同样,需要用的指针,要把项目调整为允许不安全的代码。代码和注释如

    2022年4月12日
    81
  • 2018最新手机号码正则表达式

    2018最新手机号码正则表达式2017年8月,工信部给三大运营商批准了新号段,中国电信获得199号段,中国移动得到198号段,中国联通得到166号段。/***正则:手机号(精确)*&lt;p&gt;移动:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、178、182、183、184、187、188、198&lt;/p&gt;…

    2022年6月12日
    35
  • PyTorch学习之六个学习率调整策略

    PyTorch学习之六个学习率调整策略PyTorch学习率调整策略通过torch.optim.lr_scheduler接口实现。PyTorch提供的学习率调整策略分为三大类,分别是有序调整:等间隔调整(Step),按需调整学习率(MultiStep),指数衰减调整(Exponential)和余弦退火CosineAnnealing。自适应调整:自适应调整学习率ReduceLROnPlateau。自定义调整:自定义调整学习率…

    2022年6月8日
    40
  • office visio2007密钥_office免费密钥

    office visio2007密钥_office免费密钥不知道你是哪个版本,故两个版本密玥全部奉上KFPTX-FNJJ3-CKKDJ-WMQ9W-78PFRNHQB6-GTDVM-B9Q6Q-4X8TF-KBQ73祝你激活成功,谢谢采纳!https://zhidao.baidu.com/question/570302149.html…

    2022年8月13日
    3
  • SWOT分析和PEST分析[通俗易懂]

    SWOT分析和PEST分析[通俗易懂]1.SWOT分析定义:SWOT(StrengthsWeaknessOpportunityThreats)分析法,又称态势分析法或优劣势分析法,用来确定企业自身的竞争优势(strength)、竞争劣势(weakness)、机会(opportunity)和威胁(threat),从而将公司的战略与公司内部资源、外部环境有机地结合起来。如何用:首先要明白使用SWOT的目的,为什么要用它,用它的目的

    2022年6月14日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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