正则表达式

单个字符

[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).*$
posted @   逆行旅者  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示