正则表达式

概念

(regular expression)描述了一种字符串匹配的模式,可以用来检查一个大字符串中是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等

模式

一种特定的字符串模式,这个模式是通过一些特殊的符号组成的

特点

1: 正则表达式的语法很令人头疼,可读性差
2: 正则表达式通用行很强,能够适用于很多编程语言

python中正则表达式模块: re

正则表达式匹配方式:
match匹配:
match匹配格式: re.match(正则表达式,大字符串,标志位)
match匹配规则: 只能从开头开始匹配,只能返回第一个匹配成功的数据
注意:匹配成功后结果是re.Match对象,想要获取对应匹配数据使用group()函数
注意: 如果匹配失败返回None
search匹配:
search匹配格式: re.search(正则表达式,大字符串,标志位)
search匹配规则: 可以扫描整个大字符串进行匹配,只能返回第一个匹配成功的数据
注意:匹配成功后结果是re.Match对象,想要获取对应匹配数据使用group()函数
注意: 如果匹配失败返回None
findall匹配:
findall匹配格式: re.findall(正则表达式,大字符串,标志位)
findall匹配规则: 扫描整个大字符串进行匹配,把所有匹配成功的数据放到列表中返回
注意: 匹配的结果是列表list类型的,正常操作列表即可
注意:
1:如果匹配失败返回的是空列表[]
2:正则表达式中如果使用小括号,自动只获取小括号内数据,放到列表中

正则表达式中的字符匹配

注意:一般^和$配合使用,可以起到限制作用

符号解释
.任意一个字符,除了\n
[]中括号中的任意一个字符
[^x]如果^在括号中,代表除了x外其他所有字符
^不在括号中,代表以…开头
$以…结尾
*不能单独用,一般放到某个字符后,代表这个字符出现0次或者多次------次数>=0
+不能单独用,一般放到某个字符后,代表这个字符出现1次或者多次------次数>=1
?不能单独用,一般放到某个字符后,代表这个字符出现0次或1次------次数=0\1
{x}不能单独使用,一般放到某个字符后,代表这个字符出现了x次
{x,}不能单独使用,一般放到某个字符后,代表这个字符至少出现了x次
{x,y}不能单独使用,一般放到某个字符后,代表这个字符出现x到y次
\d任意一个数字
\D任意一个非数字
\w任意一个正常字符(字母,数字,下划线)
\W任意一个非正常字符(特殊字符,汉字)
\s任意一个空白(空格、\t制表符、\n换行符)
\S任意一个非空白
.*/.+贪婪模式:在整个表达式匹配成功的前提下,尽可能多的匹配
.*?/.+?非贪婪模式:在整个表达式匹配成功的前提下,尽可能少的匹配

正则标志修饰符

修饰符被指定为一个可选的标志,多个标志可以通过按位 OR(|) 它们来指定。

修饰符描述
re.I匹配时不区分大小写
re.S匹配包括换行符\n在内的所有修饰符

正则表达式匹配分组

正则中以()包括的内容进行分组,并自动生成对应的编号,起始编号为1

import re

result = re.match('^([a-zA-Z0-9_]{4,10})@(163\.com)$', "zhangsan@163.com")
# 注意: 0代表匹配到的所有数据,可以省略不写
print(result.group(0))
print(result.group())
# 注意: 上述小括号()代表一个分组,每个分组自动生成了对应的编号(从1开始)
# 获取第1个分组内容
print(result.group(1))
# 获取第2个分组内容
print(result.group(2))
# 注意: 访问不存在的分组就会报错
# print(result.group(3))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值