Python3 正则表达式知识点整理

一、是什么

一种描述字符串的规则的表达式。
^\d{8}$表示 八位的号码

1、元字符

其中,$表示匹配字符串的结束;^表示匹配字符串开始;\d匹配数字
这些字符称为元字符(指那些在正则表达式中具有特殊意义的专用字符)
常见元字符:

元字符说明
.匹配除换行符以外的任意字符
\w匹配字母or数字or下划线or汉字
\s匹配任意的空白字符
\d匹配数字
\b匹配单词的开始或结束
^匹配字符串的开始
$匹配字符串的结束

^tm匹配以tm为开头的字符串

2、限定符

大概就是对(元)字符进行一些限定或者说修饰。先看下表

限定符Value
?匹配前面的字符零次或一次
+匹配前面的字符一次或多次
*匹配前面的字符零次或多次
{n}匹配前面的字符n次
{n,}匹配前面的字符 >=n次
{n,m}匹配前面的字符 >=n但<=m次

colou?r表示匹配colourcolor

\d{3}表示\d\d\d

3、自定义字符类别

类似自定义一个元字符,用[]括起来,表示匹配[]内的所有字符
[AEIOU]表示匹配A、E、I、O、U中的任意一个
也可以指定范围,如[A-Z0-9a-z]等同于不考虑汉字的\w

4、排除字符

匹配不符合相应类别的字符串,用[^]表示不符合的类别。
[^eq]表示匹配一个非e也非q的字符

5、选择字符 “|”

该字符可理解成“或”
如要匹配身份证号,身份证号规则是:
十五位数字或十八位数字或十七位数字+X
则对应匹配字符串为
(\d{15}$)|{\d}[17](\d|X)$
"(}“可以限定”|"的范围。

6、分组

()除了限定范围外,还可以分组。
(\.[0-9]{1,3}){3}表示把\.[0-9]{1,3}重复三次。
也就是\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

二、在python中应用

要用模式字符串。为防止转义,要加上r。(具体也不是很理解,但加上r应该就为问题)
要引用re模块

1、match

re.match(pattern,string[flags])
  • pattern:模式字符串(由正则表达式加上r转换而来)
  • string:表示要匹配的字符串
  • flags:表示标志位。如是否区分大小写。
    作用:在字符串起始位置开始匹配。
    常用标志
标志说明
A或ASCII(不是LL)1233213
I不区分大小写
S'.'表示匹配所有字符,包括换行符

另外,可以用以下函数调取match的返回值。(若没有匹配到,则返回 None )
注意,None时一个值,不是字符串

函数说明
start()表示匹配的字符串的起始位置
end()表示匹配的字符串的终止位置
span()表示匹配的字符串的起始位置和终止位置组成的元组
string表示要匹配的字符串
group表示匹配到的字符串

m=re.match(r'mr_\w+','MR_SHOP mr_shop',re.I)
print(m.group())

输出

MR_SHOP

注意,若match()返回None,则调用m.group()会报错!

2、search()

搜索第一个匹配到的值,非必须在字符串起始位置。其他与match一样

3、findall()

搜索所有符合匹配的字符串,以列表形式返回符合匹配的那一段字符串。若匹配不到则返回空列表
参数与match相同

m=re.findall(r'mr_\w+','MR_SHOP mr_shop',re.I)
print(m)

输出

[‘MR_SHOP’,‘mr_shop’]

4、sub()

用正则表达式替换字符串

re.sub(pattern,repl,string[,count][,flags])

  • pattern:模式字符串
  • repl:表示替换成的字符串
  • string:表示要被替换的原始字符串
  • count:替换最大次数,默认为0,表示替换所有适配的
  • flags:表示标志位,详见上文标志位表。

5、分割字符串

split(),与之前的split相似。
不过分割的字符由模式字符串指定。
re.split(pattern,string[,maxspit][,flags])

三、总结

有些地方理解的不透彻,标记在书上了,理解之后补上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值