【无标题】pyhton中的正则表达式

本文介绍了Python中正则表达式的使用,包括`re.match`、`re.search`和`re.sub`函数的基本概念、语法以及实例应用。通过两个实际需求展示了如何查找和替换字符串中的特定模式。
摘要由CSDN通过智能技术生成

1.正则表达式的介绍

 1. 导包
            import re
 2. 正则校验.
            re.match(pattern=正则表达式, str, flag)       参1: 正则表达式,  参2: 要校验的字符串, 参3:可选项, 例如: 忽略大小写, 多行模式等.
            re.search(pattern=正则表达式, str, flag)
            re.compile(正则表达式).sub(用来替换的内容, 要被替换的内容)
 3. 获取匹配结果.
            result = re.group()
    上述函数 介绍:
        match:  匹配的意思, 从左往右, 逐个字符进行匹配, 不会跳过任意的1个字符, 要求: 全部匹配才行.
        search: 查找的意思, 从左往右, 从任意的某个字符开始, 只要能匹配上即可.
        compile:

                    写法1:
                                re.compile(正则表达式).sub(用来替换的内容, 要被替换的内容)

                    写法2: 即, 上述格式的语法糖.
                                re.sub(正则表达式, 用来替换的内容, 要被替换的内容)

2.实例

import re

# it.*   it + 后续任意内容.
result = re.match('it.*', 'sdit123sf')

# search: 查找的意思, 从左往右, 从任意的某个字符开始, 只要能匹配上即可.
result = re.search('it.*', 'sdit 123sf')


# 打印结果
if result:                              # 只要result不是None, 就会走这里.
    # print(result)                 # 匹配到的正则对象
    print(result.group())       # 从正则中, 获取具体 匹配到的内容.
else:
    # print(result)                 # None
    print('未匹配!')

# 需求1: 把字符串中的"敏感词" 给 替换成 *
old_str = "车主说: 你的刹车片应该换了啊, 嘿嘿"

# 1. 自定义正则规则.
p = r'啊|阿|嘿|呵|哈|啦|嘻|桀'        # pattern: 模板(可以理解为: 正则规则),  字符串前加r表示, 取消转移.

# 2. 基于正则规则, 获取正则对象.
res = re.compile(pattern=p)     # pattern=具体的正则字符串

# 3. 对上述的字符串进行替换.
result = res.sub('A', old_str)  # 返回的是: 字符串.

# 4. 打印匹配结果.
if result:
    print(f'匹配到: {result}')
else:
    print('未匹配!')

print('-' * 31)

# 需求2: 上述代码的简化版, 语法糖实现
old_str = "故人西辞黄鹤楼, 烟花三月黄鹤楼, 中华虽然好抽, 但是不要上瘾, 抽烟只抽煊赫门, 一生只爱一个人!"
# 参1: 正则表达式.
# 参2: 用来替换的字符串.
# 参3: 要被替换的字符串.
result = re.sub('黄鹤楼|中华|煊赫门', '*', old_str)
print(result)

3.正则规则

        .           代表: 任意的1个字符
        \.          取消.的特殊含义, 就是一个普通的. 校验邮箱的时候用, 例如: zhangsan@163.com
        a           代表: 就是1个普通的字符a
        [abc]       代表: a,b,c其中的任意1个字符
        [^abc]      代表: 除了a,b,c外, 任意的1个字符
        \d          代表: 所有的数字, 等价于 [0-9]
        \D          代表: 所有的非数字, 等价于 [^0-9]
        \s          代表: 空白字符, \n, 空格, \t等...
        \S          代表: 非空白字符, 即: 上述取反.
        \w          代表: 非特殊字符, 即: 字母, 数字, _ 下划线, 汉字
        \W          代表: 特殊字符, 即: 上述取反.

        ^           代表: 开头      '^[^abc].*'    表示非a,b,c中任意一个字母开口的
        $           代表: 结尾

        ?           数量词, 至少0次,至多1次
        +           数量词, 至少1次, 至多n次
        *           数量词, 代表前边的内容, 至少出现 0次, 至多出现 n次
        {n}         恰好n次, 多一次少一次都不行.
        {n,}        至少n次, 至多无所谓
        {n,m}       至少n次, 至多m次, 包括n和m

  • 41
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值