【笔记】正则表达式[1]
元字符
符号 |
意思 |
示范 |
详例 |
\d |
任意一个数字 |
\d{2}-\d{8} |
22-12345678 |
* |
*前的符号重复任意次数 次数可以为零 |
\d* |
222222222222... 或 2 |
\s |
任意的空白符 全半角空格,tab,换行符 |
\bhi\b\s\bLucy\b |
hi Lucy |
+ |
和*用法相似 次数>=1 |
\d+ |
22 2222 |
\w |
匹配任何单词字符串 等价于[A-Z a-z 0-9] |
\d{2}\w\s\d{6} |
22h 222222 222 222222 22_ 222222 |
^ |
匹配行的开始 |
^\d{2} |
匹配元:wwwwww22wwwwwww 匹配结果:22 |
$ |
匹配行的结束 |
[a-z]{2}$ |
匹配元:2222222kfjda999999999 匹配结果:kf |
? |
重复0或1次 |
^2?$ |
匹配元:6dfadfhah22222jdfkajldkf9 匹配结果:22 |
分枝条件 | 符合
稍微知晓编程的人都懂得,|符号的意思是或。
0\d{2}-\d{8}|0\d{3}-\d{7}这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)。
但是也要注意分支条件的顺序
例如:
美国就邮政编码是5位数字或5位数字-4位数字
因此就可以用\d{5}-\d{4}|\{5}进行匹配
但是如果写成\d{5}|\d{5}-\d{4}|
那么就只会匹配5位的邮编(以及9位邮编的前5位)
反义
代码/语法 | 说明 |
---|---|
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
分组
我们可以对某个单词进行重复匹配,那么对一组字符串又该如何重复匹配呢??我们可以在需要匹配的正则外面加上小括号加以分组。
比如:
(\d{3}.){3}\d{4},这个表达式就能匹配出173.169.111.9999
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?