匹配符号:正则表达式是由各种各样的正则符号组合而成
1.普通字符 – 在正则中没有特殊功能和特殊意义的字符
普通字符在正则表达式中表示符号本身,例如:az,AZ,中文等等
2.特殊符号
2.2.
– 匹配任意一个字符(一个.只能匹配一个字符)
2.3\d
– 匹配任意一个数字字符
2.4\s
– 匹配任意一个空白字符(空白字符:空格、\t、\n)
2.5\w
– 匹配任意一个字母数字包括下划线(相当于[a-zA-Z0-9_])
在没有ASCII标志的字符串模式中,它将匹配Unicode字母数字字符(字母加数字加下划线)的范围
2.6\D
、\S
\D
– 匹配任意一个非数字字符
\S
– 匹配任意一个非空白字符
2.7[字符集]
– 匹配字符集中任意一个字符
减号(-)在两个符号之间,表示谁到谁
[a-z] – 匹配任意一个小写字母
[A-Z] – 匹配任意一个大写字母
[a-zA-Z] – 匹配任意一个字母
[\u4e00-\u9fa5] – 匹配任意一个中文
2.8[^字符集]
– 匹配不在字符集里的任意一个字符
匹配次数符号
*
– 匹配0次或多次(任意次数)+
– 匹配1次或多次(至少1次)?
– 匹配0次或1次{}
{N} – N次
{M,N} – M到N次
{M,} – 至少M次
{,N} – 最多N次
贪婪和非贪婪
在匹配次数不确定的时候,匹配模式分为贪婪和非贪婪两种(默认为贪婪模式)
*、+、{M,N}、{M,}、{,N}、? - 贪婪
*?、+?、{M,N}?、{M,}?、{,N}?、?? - 非贪婪
注意:python中除了fullmath以外都有可能出现贪婪和非贪婪的问题
分组与分支
分组 – ()
应用场景1:将正则表达式中的部分用()括起来作为一个整体进行相关操作
应用场景2:重复。可以在有分组的正则表达式中通过\N来重复它前面第N个分组匹配到的内容
应用场景3:捕获。使用findall的时候,如果正则表达式中有分组,返回数据的时候只返回分组中匹配到的内容
分支 – |
正则1 | 正则2 – 正则1和正则2中只要有一个能匹配成功就匹配成功
__转义字符 __
在本身具备特殊功能或者特殊意义的符号前加\,让其功能或者意义消失,变成一个普通符号
另一种方法:单独一个符号有特殊功能的时候可以将该符号放在[]中,让其特殊功能消失
忽略大小写
在正则的最前面加(?i)
将会忽略大小写
单行匹配和多行匹配
多行匹配匹配的时候,不能和’\n’匹配(默认) – (?m)
单行匹配匹配的时候,可以和’\n’匹配 – 在正则的最前面加(?s)
利用正则表达式完成下面的操作:
一、不定项选择题
-
能够完全匹配字符串"(010)-62661617"和字符串"01062661617"的正则表达式包括(A B D)
A.
r"\(?\d{3}\)?-?\d{8}"
B.r"[0-9()-]+"
C.r"[0-9(-)]*\d*"
D.r"[(]?\d*[)-]*\d*"
-
能够完全匹配