几个正则表达式编辑器:
Regexper:http://www.regexper.com/
Debuggex :https://www.debuggex.com/
PyRegex:http://www.pyregex.com/
1.匹配任意一个字符.
-
.是元字符 -
b.u可以找出bau bru biu b.u b1u等等等,但是不会找出bu biiu -
.不能用于匹配换行符
⚠️:反斜杠\可以忽略元字符,使得元字符的功能与普通字符一样
故,b\.u将找出b.u,b\\u将找出b\u
2.匹配阿拉伯数字、英文大小写和下划线\w\W
\w匹配阿拉伯数字、英文大小写和下划线
\W匹配被\w排除在外的字符(\w的补集)
3.匹配阿拉伯数字\d
- 匹配数字:
\d - 匹配小数:
\d\.\d - 既匹配数字又匹配小数:➡️
\D:匹配非阿拉伯数字\d的补集(包含空格等)
4.匹配空白字符\s
\s:匹配空格、制表符、换行等
\S:匹配被\s排除在外的字符(\s的补集)
5.字符集合[a-zA-Z0-9]
[选择范围]:匹配方括号中的任意一个字符
[\u4e00-\u9fa5]:中的所有中文字符
6.重复一次或多次+
[范围]+:重复一次或多次
[yY][oO]+
yo
yooo
Yo
YOOOO
?[]里的一个字符重复一次或多次??
7.重复0次或多次*
[yY][oO]+[!~\.]*
yo
yooo
Yo
YOOOO
yo!
yo.
yoooo~~
8.重复0次或1次?
[范围]?:重复0次或1次
[yY][oO]+p?[!~\.]*
yop!!
Yoop
yooop
yo
yooo
Yo
YOOOO
yo!
yo.
yoooo~~
9.指定重复范围(重复a到b次)
{a,b}:重复a到b次
10.分组匹配
(.+)飞飞,(.+)追追
$1
$2
11.分组匹配但不捕获(?:模式)
12.正向预查
正向肯定预查:(?=模式)
\d+(?=模式):前面是我要匹配的东西,后面必须跟模式,但是不要匹配模式中的内容
正向否定预查:(?!模式)
(?!模式)|\前面匹配的内容
13.反向预查
加了个箭头<
(?<=xxx) 反向肯定预查,与正向肯定预查类拟,只是方向相反
(?<!xxx) 反向否定预查,与正向否定预查类拟,只是方向相反
14.速查表
边界
| 符号 | 描述 | 例子 | 能匹配 | 不能匹配 |
|---|---|---|---|---|
^ |
行首或字符串开始 | ^yo |
yo | ayo |
$ |
行末或字符串结束 | yo$ |
yo | yop |
\b |
单词边界 | \byo\b |
mu yo mu | muyomu |
\B |
非单词边界 | \Byo\B |
muyomu | mu yo mu |
预查
| 符号 | 描述 | 例子 | 能匹配 | 不能匹配 |
|---|---|---|---|---|
(?=xxx) |
正向肯定预查,从任何匹配xxx的字符串开始处匹配查找字符串 | yo(?=o) |
yoo | yo |
(?!xxx) |
正向否定预查,从任何不匹配pattern的字符串开始处匹配查找字符串 | yo(?!o) |
yo | yoo |
(?<=xxx) |
反向肯定预查,与正向肯定预查类拟,只是方向相反 | (?<=y)o |
yo | yoo |
(?<!xxx) |
反向否定预查,与正向否定预查类拟,只是方向相反 | (?<!goo)d |
mood | good |
通配
| 符号 | 描述 | 例子 | 能匹配 | 不能匹配 |
|---|---|---|---|---|
[ ] |
字符集合 | [ace] |
a, c, e | d |
[ - ] |
字符范围 | [a-c] |
a, b, c | d |
[^ ] |
不包含的字符集合 | [^abc] |
d, e | a, b, c |
. |
匹配除断行外的任何字符 | yo. |
yoo, yop, yoh | yo |
\s |
空白字符,等于[\n\r\f\t ] | la\sla |
la la | lala |
| \S | 非空白字符,等于[^\n\r\f\t] | la\Sla |
la+la | la la |
\d |
数字 | \d{2} |
23 | 1a |
\D |
非数字 | \D{3} |
yoo, abc | yo1 |
\w |
单词,等于[a-z-A-Z0-9_] | \w{4} |
v123 | v12.3 |
\W |
非单词,等于[^a-z-A-Z0-9_] | .$%? |
.$%? | .ab? |
特殊字符
| 特殊字符 | 描述 |
|---|---|
\n |
断行 |
\r |
回车符 |
\t |
制表符 |
\v |
垂直制表符 |
\f |
换页 |
[\b] |
退格 |
其他
| 符号 | 描述 | 例子 | 能匹配 | 不能匹配 |
|---|---|---|---|---|
| |
或,其一 | a|b |
a, b | c |
(xxx) |
匹配xxx并获取这一匹配 | yo(o|p) |
yoo 或 yop | yoh |
(?:xxx) |
匹配xxx但不获取这一匹配 | y(?:o) |
yo | ya |
+ |
重复1次或多次 | yo+ |
yo, yooo | y |
* |
重复0次或多次 | yo* |
y, yoo | yop |
? |
出现0次或1次 | yo? |
y, yo | ye |
?? |
?的懒惰模式,尽可能少匹配 | yoo?? |
yo | yoo |
+? |
+的懒惰模式 | yo+? |
yo | yoo |
*? |
*的懒惰模式 | yo*? |
y | yo |
{n} |
重复n次 | yo{2} |
yoo | yooo |
{n,m} |
重复n到m次 | yo{1, 3} |
yo,yooo | yoooo |
{n,} |
重复至少n次 | yo{2,} |
yoo, yooo | yo |













网友评论