

单个字符
| [aeiou] 匹配所有的元音(aeiou)字符 |
| [^aeiou] 匹配所有的非元音字符 |
| [a-z] 匹配a~z中所有字符 |
| . 匹配除换行符(\n、\r)之外的任何单个字符,相等于 [^\n\r] |
| [\s\S] 匹配所有。\s 是匹配所有空白符,包括换行;\S 非空白符,不包括换行 |
| \w 匹配字母、数字、下划线。等价于 [A-Za-z0-9_] |
| \d 匹配数字。等价于[0-9] |
元字符
| \d 匹配数字字符 |
| \D 匹配非数字字符 |
| \w 匹配单词字符(英文、数字、下划线); 等价于[A-Za-z0-9_] |
| \W 匹配非单词字符 |
| \s 匹配空白符(包括换行符、Tab) |
| \S 匹配非空白字符 |
| . 匹配任何单个字符,它只能出现在方括号以外, 只有一个不能匹配的字符,也就是换行符(\n) |
| \b \b标注字符的边界(全字匹配);例如\bword\b匹配单词word |
| ^ 匹配行首 |
| $ 匹配行尾 |
非打印字符
| \f 匹配一个换页符。等价于 \x0c 和 \cL |
| \n 匹配一个换行符。等价于 \x0a 和 \cJ |
| \r 匹配一个回车符。等价于 \x0d 和 \cM |
| \s 匹配任何空白字符 |
| \S 匹配任何非空白字符 |
| \t 匹配一个制表符 |
| \v 匹配一个垂直制表符 |
限定符
| * 匹配前面的子表达式零次或多次。 |
| 例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,} |
| |
| + 匹配前面的子表达式一次或多次。 |
| 例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。 |
| + 等价于 {1,} |
| |
| ? 匹配前面的子表达式零次或一次。 |
| 例如,"do(es)?" 可以匹配 "do"、"does" 中的 "does"、"doxy" 中的 "do" 。 |
| ? 等价于 {0,1} |
| |
| {n} n 是一个非负整数。匹配确定的 n 次。 |
| 例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配"food" 中的两个 o |
| |
| {n,} n 是一个非负整数。至少匹配n 次。 |
| 例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配"foooood" 中 的所有 o |
| 'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*' |
| |
| {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。 |
| 例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。 |
| 'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格 |
^ $符号
定位符用来描述字符串或单词的边界,^ 和 $ 分别指字符串的开始与结束,\b 描述单词的前或后边界,\B 表示非单词边界
^ 匹配字符串开头
$ 匹配字符串结尾
e.g. ^bucket$ 匹配单词bucket
^符号,在[]之内和之外是不同的。在[]内表示反向选择,在[]外表示定位在行首。
通用规则
| 1.正则表达式默认是贪婪模式,即尽可能的匹配更多字符,而要使用非贪婪模式,我们要在表达式后面加上 ? |
| |
| 2.贪婪/懒惰匹配 |
| <.+> 默认贪婪匹配“任意字符” |
| <.+?> 懒惰匹配“任意字符” |
| |
| 3.或运算符 |
| (a|b) 匹配a或b |
| (ab)|(cd) 匹配ab或cd |
| |
| 4.匹配字符串中的两个关键词: |
| ^(?=.*word1)(?=.*word2).*$ |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!