正则表达式
2019-05-08 本文已影响0人
子午禾苇
几个正则表达式编辑器:
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 |