Python基础语法(二十)

1. re模块

1. 语法

# 导入re模块
import re

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

# 使用group方法来提取数据
result.group()

2. 示例

import re

str_mt = re.match("cc", "ccblogs")

print(str_mt.group())

# 输出结果
cc

2. 匹配单个字符

代码功能
.匹配任意一个字符(除了\n)
[]匹配[]中列举的字符串
\d匹配数字,即0-9
\D匹配非数字,即不是数字
\s匹配空白,即空格,tab键
\S匹配非空白
\w匹配非特殊字符,即a-z、A-Z、0-9、_、汉字
\W匹配特殊字符,即非字母、非数字、非汉字、非_

3. 匹配多个字符

代码功能
*匹配前一个字符出现0次或者无限次,即可有可无
+匹配前一个字符出现1次或者无限次,即至少有1次
匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m}匹配前一个字符出现m次
{m,n}匹配前一个字符出现从m到n次

4. 匹配开头和结尾

代码功能
^匹配字符串开头
$匹配字符串结尾
[^指定字符]除了指定字符都匹配

5. 匹配分组

代码功能
|匹配左右任意一个表达式
(ab)将括号中字符作为一个分组
\num引用分组num匹配到的字符串
(?P)分组起别名
(?P=name)引用别名为name分组匹配到的字符串
import re

fruit_lst = ['apple', 'banana', 'orange', 'pear', 'peach']

for val in fruit_lst:
    str_mt = re.match("banana|pear", val)

    if str_mt:
        print(str_mt.group())
    else:
        print("没有匹配到")

# 输出结果
没有匹配到
banana
没有匹配到
pear
没有匹配到
import re

str_mt = re.match("[a-zA-Z0-9_]{4,20}@(163|126|qq)\.com", "hello@163.com")

if str_mt:
    # 获取整个匹配的数据,如果使用分组化,默认是0
    print(str_mt.group())
    print(str_mt.group(0))
    print(str_mt.group(1))
else:
    print("没有匹配到")

# 输出结果
hello@163.com
hello@163.com
163
import re

str_mt = re.match("<([a-zA-Z1-6]+)><([a-zA-Z1-6]+)>.*</\\2></\\1>", "<html><h1>ccblogs</h1></html>")

if str_mt:
    # 获取整个匹配的数据,如果使用分组化,默认是0
    print(str_mt.group())
else:
    print("没有匹配到")

# 输出结果
#<html><h1>ccblogs</h1></html>
import re

str_mt = re.match("<(?P<grp1>[a-zA-Z1-6]+)><(?P<grp2>[a-zA-Z1-6]+)>.*</(?P=grp2)></(?P=grp1)>", "<html><h1>ccblogs</h1></html>")

if str_mt:
    # 获取整个匹配的数据,如果使用分组化,默认是0
    print(str_mt.group())
else:
    print("没有匹配到")

# 输出结果
#<html><h1>ccblogs</h1></html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值