Python中使用正则表达式

正则表达式

在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re

# 导入re模块
import re


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

# 如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()

匹配单个字符

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

匹配多个字符

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

匹配开头结尾

字符功能
^匹配字符串开头
$匹配字符串结尾

简单判断变量是否符合要求

import re


def main():
    names = ["age", "_age", "1age", "age1", "a_age", "age_1_", "age!", "a#123"]
    for name in names:
        ret = re.match(r"^[a-zA-Z_][a-zA-Z0-9_]*$", name)
        if ret:
            print("变量名:%s 符合要求...通过正则匹配出来的数据是:%s" % (name, ret.group()))
        else:
            print("变量名:%s 不符合要求..." % name)


if __name__ == "__main__":
    main()

分组

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

简单判断email

import re


def main():
    email = input("请输入一个邮箱地址:")
    # 如果在正则表达式中需要用到了某些普通的字符,比如:?等,仅仅需要在他们前面添加一个反斜杠进行转义
    ret = re.match(r"[a-zA-z_0-9]{4,20}@(163|126)\.com$]", email)
    if ret:
        print("%s符合要求..." % email)
    else:
        print("%s不符合要求..." % email)


if __name__ == "__main__":
    main()

re.match与re.search

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。


findall(string, pos, endpos)
  • string : 待匹配的字符串
  • pos : 可选参数,指定字符串的起始位置,默认为 0。
  • endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度。

sub(替换)
import re


def add(temp):
    strNum = temp.group()
    num = int(strNum) + 1
    return str(num)


ret = re.sub(r"\d+", add, "python = 997")
print(ret)

ret = re.sub(r"\d+", add, "python = 99")
print(ret)

split(切片,返回一个列表)
import re


ret = re.split(r":| ", "info:xiaoZhang 33 shangdong")
print(ret)

out:['info', 'xiaoZhang', '33', 'shangdong']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值