C#语法之正则


本文提供全流程,中文翻译。

Chinar 坚持将简单的生活方式,带给世人!

(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例)


Chinar —— 心分享、心创新!

助力快速理解: 正则表达式的用法、规范

为新手节省宝贵的时间,避免采坑!

Chinar 教程效果:
正则:^((([1]?\d\d?|2[0-4]\d|25[0-5])\.){3}([1]?\d\d?|2[0-4]\d|25[0-5]))$


  • 1

    • Regular Expression —— 正则表达式
  • 2
    • Regex Tools —— 正则表达式工具
  • 3
    • Contain abc —— 是否包含 abc字符
  • 4
    • MetaCharacter —— 元字符
  • 5
    • ESC —— 反义字符
  • 6
    • Repetition Descriptor —— 重复描述字符
  • 7
    • Alternative —— 择一匹配符
  • 8
    • Grouping —— 分组
  • 9
    • Verification IPV4 —— 验证 IP 合法
  • 10
    • Verification IPV4 —— 菜鸟深造
  • 支持
    • May Be —— 搞开发,总有一天要做的事!

全文高清图片,点击即可放大观看 (很多人竟然不知道)


1

Regular Expression —— 正则表达式

正则表达式的用法,在诸多语言中,几乎都是一样

这里就以 C# 为例,用 VS 控制台输出 做演示

概念:
对于正则表达式官方的简介,我这里都不多说了,一句话概括就是:
用一些正则字符按照语法要求进行自定义的组合,用来判断需要处理的字符串是否合规
也就是用来记录字符规则的代码
(其实你就先理解为:定义一个判断条件 就是 定义正则表达式)
用途:
处理字符串 / 判断字符串是否合规

Chinar 将用大量的例子去,帮助大家理解正则是个什么玩意儿….


2

Regex Tools —— 正则表达式工具

Chinar 收集并挑选了网上大神 / 公司做的较为出色的正则工具,一并推荐给大家!

1. 正则图示工具—— Regulex

2. 正则图示工具—— Regexper

3. 菜鸟正则测试工具—— 菜鸟正则在线测试

4. 站长正则测试工具—— 站长正则测试工具


3

Contain abc —— 是否包含 abc字符

当我们需要判断用户输入字符中,是否含有 abc 三个字符时

static void Main()
{while (true){string str     = Console.ReadLine();                //把用户输入的字符存入 strstring regex   = @"[abc]";                          //C#中 加@"[abc]" 为正则表达式基本写法bool   isMatch = Regex.IsMatch(str, regex);         //比较:—— IsMatch(需要判断的字符,正则):返回bool值 Console.WriteLine(isMatch ? "满足条件" : "不满足"); //输出结果Console.WriteLine();                                //空行}
}

输入 / 输出结果:

1
不满足a
满足条件Chinar
满足条件新年快乐!bcadlf
满足条件1231534564dc
满足条件

4

MetaCharacter —— 元字符

正则字符 作用
. 匹配除换行符( \n )以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开头
$ 匹配字符串的结尾

在字符串开头 / 结尾处添加字符

        static void Main(){StringBuilder s = new StringBuilder("www.unity.kim", 50); //声明一个字符串,容量50//news=正则类.替换字符串(需要处理的字符串,正则,添加的字符串)—— 把符合正则情况的位置,替换为 后边字符串string news = Regex.Replace(s.ToString(), "^", "网址:"); //^ :代表开头Console.WriteLine(news);                               //输出news = Regex.Replace(s.ToString(), "$", "结尾"); //$:代表结尾Console.WriteLine(news);Console.WriteLine("..................................定位元字符.....................................");Console.ReadLine();}

输出结果:

网址:www.unity.kim
www.unity.kim结尾
..................................定位元字符.....................................

5

ESC —— 反义字符

正则字符 作用
\W 匹配任意不是字母,数字,下划线,汉字的字符 —— \w 以外的字符
\S 匹配任意不是空白符的字符 —— \s 以外的字符
\D 匹配任意非数字的字符 —— \d 以外的字符
\B 匹配不是单词开头或结束的位置 —— \b 以外的字符
[^a] 匹配除了 a 以外的任意字符
[^Chinar] 匹配除了 Chinar 这几个字符以外的任意字符

替换 / 判定特定字符,是否满足条件,替换

static void Main()
{while (true){string s       = Console.ReadLine();       //s接收用户输入string regex   = @"^\W*$";                 //正则:以任意除字母、下划线、数字以外的字符 —— 开头到结尾的bool   isMatch = Regex.IsMatch(s, regex);  //匹配用户输入,是否满足正则条件Console.WriteLine(isMatch ? "满足" : "不满足"); //三目运算Console.WriteLine();                       //空行s                 = "abcdef";regex             = @"[^bde]";                    //[^bde]代表了除 bde之外的所有字符,任意一个字符string newReplace = Regex.Replace(s, regex, "1"); //匹配 s 中,除了bde之外的字符,替换为 1Console.WriteLine(newReplace);Console.WriteLine();}
}

输出结果:

!
满足1b1de1!$@#$123
不满足1b1de1)(*&^%$#@!
满足1b1de1

6

Repetition Descriptor —— 重复描述字符

正则字符 作用
* 重复 0 次或 多次
+ 重复 1 次或 多次
? 重复 0 次或 1 次
{a} 重复 a 次
{a,} 重复 a 次或 多次
{a,b} 重复 a 到 b 次

判定QQ号是否合法 —— (这里提供2种)


图 一

图 二

/// <summary>
/// 判断QQ号是否合法
/// </summary>
static void Main()
{while (true){string qq    = Console.ReadLine();       //等待用户输入string regex = @"^\d{5,11}$";            //正则:开头结尾都是数字,并且5-11位都为数字bool   isqq  = Regex.IsMatch(qq, regex); //判断并返回布尔值Console.WriteLine(isqq ? "是QQ号" : "不是QQ号"); //三目运算Console.WriteLine();}
}

输出结果:

10000
是QQ号122694885
是QQ号1234
不是QQ号123456789012
不是QQ号abc123456
不是QQ号123456!
不是QQ号

7

Alternative —— 择一匹配符

| —— 或,把可能性进行或相关

从给定字符串中拆分出名字

        /// <summary>/// 择一匹配符/// </summary>static void Main(){StringBuilder   s               = new StringBuilder("网址:www.unity.kim/1/ab3.html", 50); //定义一个字符串string          regex           = @"\d|[a-z]|[/]|[.]";                                  //正则:包含数字 | a-z的字母 | / | . 的字符。MatchCollection matchCollection = Regex.Matches(s.ToString(), regex);                   //返回的是一个 MatchCollection 集合  foreach (Match match in matchCollection)                                                //遍历集合{Console.Write(match.ToString()); //输出到一行中}Console.WriteLine();Console.WriteLine("...............择一匹配符一....................................");s.Remove(0, s.Length);s.Append("a,钱二。孙三:李四;孬蛋》");regex            = @"[,。:;》]"; //正则:满足任意一个,。:;》这些字符的,来分割字符串string[] strings = Regex.Split(s.ToString(), regex);foreach (var s1 in strings){Console.WriteLine(s1);}Console.WriteLine("...............择一匹配符二....................................");regex   = @"[,]|[。]|[:]|[;]|[》]"; // | —— 或的意思strings = Regex.Split(s.ToString(), regex);foreach (var s1 in strings){Console.WriteLine(s1);}Console.WriteLine("...............择一匹配符三....................................");Console.ReadLine();}

输出结果:

www.unity.kim/1/ab3.html
...............择一匹配符一....................................
a
钱二
孙三
李四
孬蛋...............择一匹配符二....................................
a
钱二
孙三
李四
孬蛋...............择一匹配符三....................................

8

Grouping —— 分组

() —— 括号决定优先级

先匹配 c\w 然后重复 2 次

        /// <summary>/// 分组 —— 测试连续先后顺序/// </summary>static void Main(){while (true){string s          = Console.ReadLine();            //等待用户输入string regex      = @"(c\w{2}){2}";                //其实就等于 C\w连在一起满足2次   满足前者2次string newReplace = Regex.Replace(s, regex, "小狗"); //替换满足 正则的 字符为:小狗Console.WriteLine("结果为:" + newReplace);Console.WriteLine(".....................正则分组一....................................");}}

输出结果:


c1acbdadsfasdfsadfjl你好12345
结果为:小狗adsfasdfsadfjl你好12345
.....................正则分组一....................................
c11cd!alskdj年
结果为:c11cd!alskdj年
.....................正则分组一....................................
cqwcer,..34你好cagc33,crrcpp,c44,c66c__
结果为:小狗,..34你好小狗,小狗,c44,小狗
.....................正则分组一....................................

9

Verification IPV4 —— 验证 IP 合法

综合训练


验证IPV4地址的合法性

        /// <summary>/// 分组 —— 测试IP合法性/// </summary>static void Main(){string regex = @"^((([1]?\d\d?|2[0-4]\d|25[0-5])\.){3}([1]?\d\d?|2[0-4]\d|25[0-5]))$"; //判断IP地址是否合规while (true){string s       = Console.ReadLine();             //等待用户输入bool   isMatch = Regex.IsMatch(s, regex);        //验证ip是否合法Console.WriteLine(isMatch ? "是IP地址" : "不是IP地址"); //三目运算Console.WriteLine(".....................正则分组二....................................");}}

输出结果:


1.1.1.1
是IP地址
.....................正则分组二....................................
255.255.255.255
是IP地址
.....................正则分组二....................................
256.255.255.255
不是IP地址
.....................正则分组二....................................
0.0.0.-1
不是IP地址
.....................正则分组二....................................
a.b.c.d
不是IP地址
.....................正则分组二....................................


10

Verification IPV4 —— 菜鸟深造

Chinar 毕竟不是专业级教师,所以想要更深的了解正则,请去菜鸟深造!

Chinar 已为您提供了传送门 ↓ ↓

菜鸟 - 正则表达式30分钟入门教程(其实很长….一个小时也很难吃透)

其实一般都是要用到的时候才去搜索

收藏好,目录2中的4个工具,对于你正则的学习会很有用处!

感谢您的支持!


支持

May Be —— 搞开发,总有一天要做的事!

拥有自己的服务器,无需再找攻略!

Chinar 提供一站式教程,闭眼式创建!

为新手节省宝贵时间,避免采坑!

先点击领取 —— 阿里全产品优惠卷 (享受最低优惠)

1 —— 云服务器超全购买流程 (新手必备!)

2 —— 阿里ECS云服务器自定义配置 - 购买教程(新手必备!)

3—— Windows 服务器配置、运行、建站一条龙 !

4 —— Linux 服务器配置、运行、建站一条龙 !



Chinar


END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com

对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

正则表达式教程手册、正则一点通(Chinar出品)相关推荐

  1. php一点通,编程一点通app-编程一点通官方版下载v1.0.1-七度网

    编程一点通app是一款专业的手机在线编程学习软件,超级适合入门级学员,包含的编程语言丰富,可以满足不同用户的学习需求,感兴趣的用户还可以针对自己喜欢的内容进行在线学习,掌握更多专业化的知识,推荐大家都 ...

  2. 由浅入深的正则表达式教程,简单快速学习正则

    文章目录 前言 正则表达式是什么 字符串匹配方法 match() 字符串检查方法 test() 正则表达式语法 ^ 和 $ 的用法和区别详解 限定符 普通字符 特殊字符 元字符 运算符优先级 常用的正 ...

  3. java 正则 单个字符_正则表达式教程之匹配单个字符详解

    本文实例讲述了正则表达式教程之匹配单个字符.分享给大家供大家参考,具体如下: 注:在所有例子中正则表达式匹配结果包含在源文本中的[和]之间,有的例子会使用Java来实现,如果是java本身正则表达式的 ...

  4. 很好的正则表达式教程

    版本:v2.21 (2007-8-3) 作者:deerchao 来源:unibetter大学生社区 转载请注明来源 本文目标 如何使用本教程 正则表达式到底是什么? 入门 测试正则表达式 元字符 字符 ...

  5. 正则表达式教程: 开始

    原文:Regular Expressions Tutorial: Getting Started 作者:Tom Elliott 译者:kmyhy 在这篇教程中,你将学习如何在 iOS app 中使用 ...

  6. 可视化正则表达式教程

    作者:Amit Chaudhary 译者:前端小智 来源: dev 点赞再看,微信搜索**[大迁世界]关注这个没有大厂背景,但有着一股向上积极心态人.本文 GitHub https://github. ...

  7. php一点通,编程一点通

    学好编程最重要的是要细心,学会编程你将成为一个大佬了.编程一点通是一个非常厉害的学习编程的软件,里面有很多技术大佬教导大家进行学习,还有很多关于编程的最新学习方式的资讯都可以免费在线学习,一定不要错过 ...

  8. php 正则表达式 文档,php的正则表达式完全手册

    php的正则表达式完全手册 更新时间:2011年02月06日 17:12:49   作者: 正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感.只要认真去阅读这 ...

  9. 正则表达式--教程二(语法)

    正则表达式--教程一 简介(共三篇):https://blog.csdn.net/alzzw/article/details/99463959 正则表达式--教程三(匹配规则及示例):https:// ...

最新文章

  1. win7系统下访问网上邻居提示用户名密码错误
  2. HashMap 和HashTable区别和实现原理。
  3. 修改Jtable字体颜色
  4. java 高性能缓存_高性能Java缓存----Caffeine
  5. 加密 lua_三、Lua相关知识
  6. tm是什么域名_天猫入驻条件门槛是什么意思?企业入驻天猫详细解析
  7. Spring MVC【入门】就这一篇!
  8. java打印空心金字塔
  9. bug10-graphviz.backend.ExecutableNotFound: failed to execute [‘dot‘, ‘-Tpdf‘, ‘-O‘, ‘Source.gv‘]
  10. ACM图论、网络流题目总结
  11. 2020 【第十一届蓝桥杯省赛】 C/C++ B组 (第二场)
  12. linux 基础知识考试试题,Linux常识型试题
  13. 系统蓝屏日志DMP文件分析工具WinDbg及教程
  14. 单片机矩阵键盘扫描程序c语言,51单片机矩阵键盘扫描程序(源代码)
  15. 计算机毕设如何做?点进来,干货分享。
  16. 数据传输服务包年包月_包年包月转按月付费
  17. 在WINDOWS运行框中能够输入的命令有多少?(转)
  18. 证件照修改尺寸像素大小和存储大小
  19. VSCode的下载安装与配置教程(详细)
  20. 讲解关于编写跨平台Java程序时的注意事项 选择自 tiewen 的 Blog

热门文章

  1. iOS - UIAlertController
  2. Linux内核TCP/IP参数分析与调优
  3. 微软关于XP退役的进一步说明。
  4. Vue2.x开发饿了么项目(header部分)
  5. 【翻译】SQL Server索引进阶:第七级,过滤的索引
  6. JAVA正则表达式高级用法(分组与捕获)
  7. 升级EXCHANGE2010到2013(A)
  8. 使用定制的NSDictionary的方法,对NSArray进行排序(附:数组排序两种常见方法)
  9. ApacheCN 数据科学/人工智能/机器学习知识树 2019.2
  10. 10分钟快速构建汽车零售看板