正则表达式

概念

(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)$', "[email protected]")
# 注意: 0代表匹配到的所有数据,可以省略不写
print(result.group(0))
print(result.group())
# 注意: 上述小括号()代表一个分组,每个分组自动生成了对应的编号(从1开始)
# 获取第1个分组内容
print(result.group(1))
# 获取第2个分组内容
print(result.group(2))
# 注意: 访问不存在的分组就会报错
# print(result.group(3))

你可能感兴趣的:(正则表达式)