最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
CSharp正则表达式用法入门大全
时间:2026-06-30 09:23:53 编辑:袖梨 来源:一聚教程网
正则表达式
(这部分内容难以理解,想要讲透还是比较困难,请跟随贴主一步一步探寻)
首先我们要知道正则表达式能够做什么?
- 查找:在文本中找到特定模式的内容
- 替换:将符合某种模式的文本替换为其他内容
- 验证:检查输入的数据是否符合预期格式
- 提取:从复杂文本中提取需要的信息
总的来说就是用于模式匹配和搜索文本的一个工具,也可以把它想作是一个 超级通配符
对于通配符举一个简单的例子,也常常发生在我们查找文件的过程
//像查找 data(w)?.dat 这种,你可能会查到以下形式的文件 data.dat data1.dat data2.dat datax.dat dataN.dat //而像查找 data.*.dat 这种,你可能会查到以下形式的文件 data.dat data1.dat data2.dat data12.dat datax.dat dataXYZ.dat // ? 通配符匹配文件名中的 0 个或 1 个字符,而 * 通配符匹配零个或多个字符
从上述的搜索结果很容易看出,通配符确实具有它的强大,但是也存在相应限制。假如类似文件名很多,也是日常中常会碰到的这种情况下,定位到指定文件夹就显得较为困难。
这也就是为什么我们会在引入“超级通配符”,即正则表达式。
想要学习正则表达式,我们要从一个简单的正则表达式开始认识。
- ^ 为匹配输入字符串的开始位置
- [0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个
- abc$匹配字母 abc 并以 abc 结尾,$ 为匹配输入字符串的结束位置
以上这个简单的正则表达式其实在生活中常常会遇到,只是大家都没有过多去关心这背后的实现原理。以贴主自己为例,打游戏无法取到心仪的名字也正是它在“捣鬼”,hhh
言归正传
由上面的简单正则表达式进一步进阶为下面的表达式
- ^表示匹配字符串的开头
[a-zA-Z0-9_-]表示字符集,包含小写字母、大写字母、数字、下划线_和连接字符-{3,15}表示前面的字符集最少出现 3 次,最多出现 15 次,从而限制了用户名的长度在 3 到 15 个字符之间$表示匹配字符串的结尾
以上的正则表达式匹配 runoob、runoob1、run-oob、run_oob等,但不匹配 ru、 runoob$等
当然正则表达式的日常使用远不止上面的这些,它也有它自己的元字符和特性
看到这个表格,相信很多小伙伴就会比较焦虑,这么多都需要记住吗?确切的来说是,但又不是。因为这个东西本就是孰能生巧的一个过程,当你用多了,它自然就会在你脑子里留下印象,你自然也就记住了。就好比贴主之前不会做饭,食材和调料放什么怎么放都不知道,但后来迫于生活的压力不得不自己做,于是慢慢就会了,也就记住了。这是一个道理,hhh
有了前面的基础,相信你对正则表达式已经有了一个比较确切的认识,由于目前以C#语言为主,故后面的内容围绕C#展开,不同语言可能用法有所不同,但是底层的逻辑基本都是一致的。下面的内容会略微枯燥,但是贴主已经尽力挑最精华的部分讲,请耐心看完。
1、字符类
上述不好理解的应该主要是p{name}和P{name},一个是与 name 指定的 Unicode 通用类别或命名块中的任何单个字符匹配,而另一个则相反,与不在 name 指定的 Unicode 通用类别或命名块中的任何单个字符匹配。在 Unicode 标准中,Lu 代表 "Letter, uppercase"(大写字母)。也就有了上面的结果。具体遇到了之后可以通过查阅资料得知。
2、字符转义
下面所列举的是历史遗留的控制字符 (在日常中较少用,可要到后再前往学习即可)
a(报警/响铃):早期终端遇到这个字符会发出“滴”的响声v(垂直制表符) 和f(换页符):早期用于控制打印机纸张的滚动e(转义符 Escape):匹配 ASCII 里的 ESC 键控制码c X(ASCII 控制字符):用于匹配按键组合。例如cC匹配Ctrl + C产生的控制字符b(退格符 Backspace):注意这里有一个非常关键的细节! 在正则表达式中,b通常代表“单词边界”(比如匹配整个单词)。只有当它被放在方括号内,写成[b]时,它才代表键盘上的“退格键”(Backspace)。图片中的描述特意强调了“在字符类中”,就是指放在[]里面。
当您的键盘打不出某个字符,或者您想极其精确地指定某个字符时,可以使用它的计算机底层编码来匹配。这三种方式本质上是一样的,只是进制不同:
x nn(十六进制):用两位十六进制数表示字符。例如x20代表空格(ASCII码 32 的十六进制是 20)u nnnn(Unicode):用四位十六进制数表示全球统一的 Unicode 字符。例如u0020同样代表普通空格。它也可以用来匹配中文等复杂字符(如u4e00代表汉字“一”)nnn(八进制):用两到三位八进制数表示。例如