Python 正则表达式

1 正则表达式语法

1.1 行定位符

"^“表示行的开始,”$"表示行的结尾.

1.2 元字符

常用元字符

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

1.3 重复

常用限定符

限定符说明举例
?匹配前面的字符零次或一次colou?r, 该表达式可以匹配colour和color
+匹配前面的字符一次或多次go+gle,该表达式可以匹配到范围从gogle到goo…gle
*匹配前面的字符零次或多次go*gle, 该表达式可以匹配的范围从ggle到goo…gle
{n}匹配前面到字符n次go{2}gle, 该表达式只匹配google
{n,}匹配前面的字符最少n次go{2,}gle, 该表达式可以匹配的范围从google到goo…gle
{n,m}匹配前面的字符最少n次,最多m次employe{0,2},该表达式可以匹配employ/employ和employee

例如,匹配8位QQ号

^\d{8}$

1.4 字符类

例子:

[aeiou]匹配任何一个英文元音字母
[0-9]含义与\d一致
[a-z0-9A-Z]与\w一致

1.5 排除字符

^字符

[^a-zA-Z]
用于匹配一个不是字母的字符

1.6 选择字符

选择字符(|),可以理解为"或"

(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|X|x)$
匹配身份证,可以匹配15位数字,或者18位数字.或者17位数字和最后一位是数字或X或x

1.7 转义字符

转义字符(),将特殊字符(如"." “?” ""等)变为普通的字符

[1-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
用于匹配ip地址

1.8 分组

小括号()

(thir|four)th

1.9 在Python中使用正则表达式语法

'\\bm\\w*\\b'
匹配以字母m开头到单词
写成原生字符串,即在模式字符串前加r或R
r'\bm\w*\b'

2 使用re模块实现正则表达式操作

2.1 匹配字符串

(1) 使用match()方法进行匹配

match()方法用于从字符串的开始处进行匹配

(2) 使用search()方法进行匹配

search()方法用于在整个字符串中搜索第一个匹配的值,如果在起始位置匹配成功,则返回March对象,否则返回None

(3) 使用findall()方法进行匹配

findall()方法用于在整个字符串中搜索搜有符合正则表达式的字符串,并以列表的形式返回

re.findall(pattern, string, [flags])

参数说明:

  • pattern: 表示模式字符串,由要匹配的正则表达式转换而来
  • string: 表示要匹配的字符串
  • flags: 可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写
import re
pattern = r'mr_\w+'
string = 'MR_SHOP mr_shop'
match = re.findall(pattern, string, re.l)	# 不区分大小写
print(match)		# ['MR_SHOP', 'mr_shop']

2.2 替换字符串

sub()方法用于实现字符串替换

re.sub(pattren, repl, string, count, flags)

参数说明:

  • pattern: 表示模式字符串,由要匹配的正则表达式转换而来
  • repl:表示替换的字符串
  • string: 表示要被查找替换的原始字符串
  • count: 可选参数,表示模式匹配后替换的最大次数,默认值位0,表示替换所有的匹配
  • flags:可选参数,表示标志位
import re 
pattern = r'(黑客)|(抓包)|(监听)|(Trojan)'
about = "我是一名程序员,我喜欢看黑客方面的图书,想研究一下Trojan"
sub = re.sub(pattern, '@_@', about)
print(sub)  # 我是一名程序员,我喜欢看@_@方面的图书,想研究一下@_@

2.3 使用正则表达式分割字符串

split()方法用于实现根据正则表达分割字符串,并以列表的形式返回

re.split(pattern, string, [maxsplit], [flags])

参数说明:

  • pattern: 表示模式字符串,由要匹配的正则表达式转换而来
  • string: 表示要匹配的字符串
  • maxsplit: 可选参数,表示最大的拆分次数
  • flags: 可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花生酱肠粉

觉得对您有帮助的话,可以打赏哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值