栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python—正则表达式

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python—正则表达式

1 正则表达式概述 1.概念
正则表达式就是记录文本规则的代码,是对字符串操作的一种匹配公式
2.例
0d{2}-d{8}这就是一个正则表达式,表达的意思是匹配的是座机号码
0就是匹配数字0
d{2]表示两个0到9的数字
d{8]表示八个0到9的数字
3.特点
语法可读性差
通用性强,能适用于很多编程性语言
2._re模块 1.re模块
# 导入re模块
import re

# 使用match方法进行匹配操作
result = re.match(正则表达式,要匹配的字符串)

# 如果上一步匹配到数据,用group方法提取数据
result.group()

3.匹配单个字符
代码功能
.匹配任意一个字符
[ ]匹配[ ]中列取的字符
d匹配数字,0到9
D匹配非数字
s匹配空白,即空格,Tab键
S匹配非空白
w匹配 非特殊字符,即a-z,A-Z,0-9,_,汉字
W匹配 特殊字符,即非字母,非数字,非汉字
4.匹配多个字符
代码功能
*匹配前一个字符出现0次或无限次,即可有可无
+匹配前一个字符出现一次或无限次,即至少有一次
匹配前一个字符出现一次或0次,即要么有一次,要么没有
{m}匹配前一个字符出现m次
{m,n}匹配前一个字符出现m到n此
5.匹配开头和结尾
代码功能
^匹配字符串开头
$匹配字符串结尾
[^指定字符]匹配除了指定字符 以外的所有字符

例子
^d 匹配以数字开头
d$ 匹配以数字结尾

6.匹配分组
使用re模块提取分组数据
代码功能
|匹配左右任意一个表达式
(ab)将括号中字符串作为一个分组
num引用分组num匹配到的字符串,但是使用时必须对进行转义也就是 \num
(?P分组起别名
(?P=name)引用别名为name分组匹配到的字符串
案例1
在列表中["apple","banana',"orange","pear"],匹配apple和pear
import re

fruit = ["apple", "banana", "orange", "pear"]
for value in fruit:
    result = re.match("apple|pear", value )
    # 判断匹配是否成功
    if result:
        info = result.group()
        print("i want eat", value )
    else:
        print("nonono")

运行结果

案例2
匹配出 163,126,qq等邮箱
import re

result = re.match("[a-zA-z0-9_]{4,20}@(163|126|qq).com", "hello@163.com")
info = result.group()

print(info)

案例3
匹配出qq:10567这样的数据,提取出来qq文字和qq号码
import re
# group()中无任何数字代表匹配所有的数字,group(1)代表第一个分组的数据(2)代表第二个分组的数据  顺序是从左到右依次排序
# qq:后面的号码是第2组
result = re.match("(qq):([1-9]d{4,15})" , "qq:10567")
if result:
    info = result.group()
    print(info)

    num =result.group(2)
    print(num)

    type = result.group(1)
    print(type)
else:
	print("匹配失败")

结果

案例4
匹配出gkd
import re
# 1 引用分组1匹配到的字符串,但是用的时候需要对进行转义
result = re.match("<([a-zA-Z1-6]{4})>.*" , "gkd")

if result:
    info = result.group()
    print(info)

else:
    print("匹配失败")

案例5
匹配出www.baidu.com
import re
result = re.match("<([a-zA-Z1-6]{4})><([a-zA-Z1-6]{2})>.*","www.baidu.com")

if result:
    info = result.group()
    print(info)

else:
    print("匹配失败")

案例6
匹配出www.baidu.com
分组搞得就很乱,下面用一下分组别名
import re
result = re.match("<(?P[a-zA-Z1-6]{4})><(?P[a-zA-Z1-6]{2})>.*","www.baidu.com")

if result:
    info = result.group()
    print(info)

else:
    print("匹配失败")

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753445.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号