正则表达式

“”"
正则表达式:
语法:
import re
正则表达式的方法:直接将正则表示作为一个字符串内容(正则需要使用引号引起来) 匹配数据
— 导入re模块
import re

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

--- 可以使用group方法来提取数据
    result.group()
找满足条件的第一个内容
    re.search("正则表达式","查找的字符串")  # 找到了返回 找到的对象 , 没有找到 返回None
    re.search("正则表达式","查找的字符串").group() # 提取找到的 字符串
找满足条件的所有内容
    re.findall("正则表达式","查找的字符串") # 返回的是一个列表
贪婪模式和非贪婪模式
    在re模块中*,+,{n,} 获取多个 默认使用的是贪婪模式 取最多
    # 非贪婪: 在贪婪的符号后 加"?" 例如: +? *? ?? {M, N}? {M,}? {, N}? #
1.匹配类符号
    -- 普通字符 除了特殊符号意外的符号都是普通字符
    -- 在[]中提供多个普通字符,匹配多个字符中的任意一个
        -- [字符1-字符2] 匹配字符1-字符2的任意一个字符  - 这个减号的意思是到的意思
        -- [\u4e00-\u9fa5]  匹配任意一个中文
        -- [a-zA-Z] 匹配任意一个字母

    -- 在[]中包含\开头的特殊符号  [\da-z] 具备特殊意义   匹配任意一个数字 或者任意一个小写字母
       [\da-zA-z_\u4e00-\u9fa5]  == \w
       [az-]abc    [] 那个就是只能匹配其中的一个
2.匹配次数
    任何匹配类符号 后面都可以添加匹配次数对应的符号来控制字符的个数
    --  + - 匹配一次或者匹配多次  至少一次
    --  ? 匹配0次或者1次
    --  {}
        --  {N} N次
        --  {M,N} M到N次
        --  {M,} 至少m次
        --  {,N}至少n次
3.分组和分支
    -- 分组 就是用()将正则的部分内容括起来表示一个整体
        --  (正则表达式){2} ()表示一个整体 {2} 控制次数    print(fullmatch(r'(\d\d[a-z]{3}){3}', '67kmn89ksm23kam'))
        --  重复 就是在正则中用\M来重复它前面M个分组匹配到的结果
        --  自动捕获案例
        message=
    -- 分支
        --  |	匹配左右任意一个表达式       正则1|正则2...
        --  (ab)	将括号中字符作为一个分组
        --  \num	引用分组num匹配到的字符串
        --  (?P<name>)	分组起别名
        --  (?P=name)	引用别名为name分组匹配到的字符串
4.检测类符号

5.转义符号
    -- 具有转义的符号前面加上'\'让这个转义符号变成普通符号 除了\开头的特殊符号 其他符号放在[]中对应的特殊功能会自动消失
fullmatch(正则,字符串)   完全匹配
findall(正则,字符串)     匹配字符串开头
split(正则,字符串)       提取字符串中所有满足正则的子串作为切割点对字符串进行切割
sub(正则,字符串1,字符串2) 将字符串2中所有满足正则的子串都替换成字符串1
findall(正则,字符串)     提取字符串中所有满足正则的子串,返回一个迭代器,迭代器中的元素就是匹配的对象

“”"
import re
from re import *

tel = “12122134589”
print(fullmatch(r’1[3-9]\d{9}‘, tel) != None) # 判fullmatch(正则表达式,字符串) - 判断字符串和正则表达式是否完全匹配 返回值 FALSE
print(fullmatch(r’1[3-9]\d{9}’, tel)) # 判fullmatch(正则表达式,字符串) - 判断字符串和正则表达式是否完全匹配 返回值 空

print(fullmatch(r’abc’, ‘abc’)) # 普通的字符 匹配长度是3的 ‘abc’ 那只能是abc了
print(fullmatch(r’a.c’, ‘abc’)) # .匹配任意一个字符
print(fullmatch(r’a\dc’, ‘a1c’)) # \d匹配任意一个数字
print(fullmatch(r’a\sc’, ‘a c’)) # \s 匹配任意一个空白字符 回车 空格(’ ‘) \t
print(fullmatch(r’a\s\s’, 'a\t\n ‘)) # \s 匹配任意一个空白字符 回车 空格(’ ‘) \t
print(fullmatch(r’a\wa’, 'a_a ')) # 匹配任意一个数字 字母 下划线或者中文

\S 非空白 \D 非数字 \W 匹配任何非单词字符.等同于[^a-zA-Z0-9_]

print(fullmatch(r’1[3-9]d’, ‘14d’)) # 在[]中提供多个普通字符,匹配多个字符中的任意一个

ret = re.match(“.”, “M”)
print(ret.group())
print(fullmatch(r’a{2}\d’, ‘aa1’)) # 有两次数字
print(fullmatch(r’\+', ‘\’)) # 至少两次斜杠

data = ‘萝莉cute@163.com’

fullmatch(r’\d’)

data = ‘67kmn89ksm23kam’

print(fullmatch(r’(\d\d[a-z]{3}){3}‘, ‘67kmn89ksm23kam’))
message = ‘<123>’
result = fullmatch(r’<\d\d*>', message)
print(result)
import re

水果列表

fruit_list = [“apple”, “banana”, “orange”, “pear”]

遍历数据

for value in fruit_list:
# | 匹配左右任意一个表达式
match_obj = re.match(“apple|pear”, value)
if match_obj:
print(“%s是我想要的” % match_obj.group())
else:
print(“%s不是我要的” % value)
match_obj = re.match(“[a-zA-Z0-9_]{4,20}@(163|126|qq|sina|yahoo).com”, “hello@163.com”)
if match_obj:
print(match_obj.group())
# 获取分组数据
print(match_obj.group(1))
else:
print(“匹配失败”)
match_obj = re.match(“<[a-zA-Z1-6]+>.*</[a-zA-Z1-6]+>”, “hh”)

if match_obj:
print(match_obj.group())
else:
print(“匹配失败”)

match_obj = re.match(“<([a-zA-Z1-6]+)>.*</\1>”, “hh”)

if match_obj:
print(match_obj.group())
else:
print(“匹配失败”)
match_obj = re.match(“<([a-zA-Z1-6]+)><([a-zA-Z1-6]+)>.*</\2></\1>”, “

www.itcast.cn

”)

if match_obj:
print(match_obj.group())
else:
print(“匹配失败”)
match_obj = re.match(“<(?P[a-zA-Z1-6]+)><(?P[a-zA-Z1-6]+)>.*</(?P=name2)></(?P=name1)>”,

www.itcast.cn

”)

if match_obj:
print(match_obj.group())
else:
print(“匹配失败”)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值