匹配数量
匹配字符正则 + 匹配数量正则 = 连续匹配N个字符正则
以下匹配结果均使用finall查找
正则 |
解释 |
原始字符串 |
匹配规则 |
匹配结果 |
? |
匹配0个或1个 |
111223: |
[1]? |
[‘1’, ‘1’, ‘1’, ‘’, ‘’, ‘’, ‘’] |
* |
匹配0个或多个 |
111223: |
[1]* |
[‘111’, ‘’, ‘’, ‘’, ‘’] |
+ |
匹配1个或多个 |
111223: |
[1]+ |
[‘111’] |
{3} |
匹配3个 |
111223: |
[1]{3} |
[‘111’] |
{3,5} |
匹配3~5个 |
1114223: |
[12]{2,5} |
[‘111’, ‘22’] |
{2,} |
最少匹配2个 |
1114223: |
[12]{2} |
[‘11’, ‘22’] |
{,6} |
最多匹配6个(最少0个) |
1114223: |
[12]{,4} |
[‘111’, ‘’, ‘22’, ‘’, ‘’] |
非贪婪模式:.+ 改为.+?
单字符(普通)
[]里写多少内容,都只能匹配一个字符
规则 |
介绍 |
样本 |
示例 |
结果 |
[aeiou] |
匹配中括号内的任意一个字母 |
Ab34d |
[abc] |
[‘b’] |
[0-9] |
匹配任何数字。等同于[0123456789] |
Ab34d |
[0-9] |
[‘3’, ‘4’] |
[a-z] |
匹配任何小写字母 |
Ab34d |
[a-z] |
[‘b’, ‘d’] |
[A-Z] |
匹配任何大写字母 |
Ab34d |
[A-Z] |
[‘A’] |
[a-zA-Z0-9] |
匹配任何字母及数字 |
Ab34d |
[a-zA-Z0-9] |
[‘A’, ‘b’, ‘3’, ‘4’, ‘d’] |
[^aeiou] |
除了aeiou字母以外的所有字符 |
Ab34d |
[^ab3] |
[‘A’, ‘4’, ‘d’] |
[^0-9] |
匹配除了数字外的字符 |
Ab34d |
[^0-9] |
[‘A’, ‘b’, ‘d’] |
单字符(特殊)
规则 |
介绍 |
样本 |
示例 |
结果 |
a、b、3、m、q |
普通字符,写什么就是什么 |
Ab34d |
A |
[‘A’] |
. |
匹配除 “\n” 之外的任何单个字符。 |
Ab34d |
. |
[‘A’, ‘b’, ‘3’, ‘4’, ‘d’] |
\d |
匹配一个数字。等价于 [0-9]。 |
Ab34d |
\d |
[‘3’, ‘4’] |
\D |
匹配一个非数字。等价于 [^0-9]。 |
Ab34d |
\D |
[‘A’, ‘b’, ‘d’] |
\s |
匹配任何空白字符,空格、制表符、换页符等。等价于 [\f\n\r\t\v]。 |
Ab34d |
\s |
[] |
\S |
匹配任何非空白字符。等价于 [^\f\n\r\t\v]。 |
Ab34d |
\S |
[‘A’, ‘b’, ‘3’, ‘4’, ‘d’] |
\w |
匹配英文和数字+下划线。等价于’[A-Za-z0-9_]‘。 |
Ab34d |
\w |
[‘A’, ‘b’, ‘3’, ‘4’, ‘d’] |
\W |
匹配非英文和数字+下划线。等价于 ‘[^A-Za-z0-9_]‘ |
Ab34d |
\W |
[] |
位置匹配
限定:出现在首尾或者特定字符前后
规则 |
介绍 |
样本 |
示例 |
结果 |
^ |
匹配字符串的开头 |
010-345 |
^01.+- |
[‘010-‘] |
$ |
匹配字符串的末尾。 |
010-345 |
-.+5$ |
[‘-345’] |
\A |
匹配字符串的开头,忽略m标记 |
re.M标记后面讲 |
\Z |
匹配字符串的末尾。忽略m标记 |
re.M标记后面讲 |
\b |
匹配一个单词边界,也就是指单词和空格间的位置。 |
hello world |
.+lo\b |
[‘hello’] |
\B |
匹配非单词边界。 |
alpha bath happy |
\S+h\B |
[‘alph’] |
(?:…) |
匹配表达式,但不捕获分组 |
abc |
a(?:b) |
[‘ab’] # 匹配ab, 但是不捕获b分组 |
(?=…) |
匹配后缀,捕获前面的分组,但不捕获该后缀 |
abc |
a(?=b) |
[‘a’] # a有b后缀,匹配a,不捕获b分组 |
(…) |
捕获分组,并记住匹配的文本 |
abc |
a(b) |
[‘b’] # 匹配b, 并捕获b分组 |
(?!…) |
如果没有后缀,则匹配 |
abc |
a(?!c) |
[‘a’] # a没有c后缀,可以匹配a |
(?<=…) |
匹配前缀,但不捕获前缀 |
cab |
(?<=a)b |
[‘b’] #b有a前缀,可以匹配b,但不捕获a分组 |
(? |
(?() |
) |
或 |
|
|
分组
规则 |
介绍 |
样本 |
示例 |
结果 |
a |
b |
匹配a或b |
|
|
|
(re) |
捕获分组,并记住匹配的文本 |
|
|
|
\1…\9 |
匹配第n个分组的内容。 |
|
|
|
(?P…) |
捕获组名为Y |
|
|
|
(?:…) |
不捕获组 |
|
|
|
(?P=Y) |
匹配名为Y的组 |
|
|
|
(?#…) |
注释 |
|
|
标记
规则 |
介绍 |
样本 |
示例 |
结果 |
i |
忽略大小写 |
|
|
|
m |
^和$匹配行首和行尾 |
|
|
|
s |
.可以匹配换行符了 |
|
|
|
x |
允许空格和注释 |
|
|
|
\L |
由当前语音区域觉得 \w\W\b\B和大小写敏感匹配 |
|
|
|
\u |
Unicode匹配 |
|
|
|
(?iLmsux) |
在正则表达式中设置标记 |
|
|
特殊符号
规则 |
介绍 |
样本 |
示例 |
结果 |
\r |
回车符 |
|
|
|
\n |
换行符 |
|
|
|
\t |
水平制表符 |
|
|
|
\v |
垂直制表符 |
|
|
|
\f |
换页符 |
|
|
|
\YYY |
八进制符号YYY |
|
|
|
\xYY |
16进制符号YY |
|
|
替换
规则 |
介绍 |
样本 |
示例 |
结果 |
\g<0> |
插入整段匹配 |
|
|
|
\g |
插入匹配Y,Y可以是匹配的名字或者数字 |
|
|
|
\Y |
插入名为Y的组 |
|
|