正则表达式概要(上)

re模块操作

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

  1. re模块的使用过程
    # 导入re模块
    import re
​
    # 使用match方法进行匹配操作
    result = re.match(正则表达式,要匹配的字符串)# 如果上一步匹配到数据的话,可以使用group方法来提取数据
    result.group()
  1. re模块示例(匹配以superman开头的语句)
import re
result = re.match("superman","superman.com")
print(result.group())

运行结果为:

 
superman
  1. 说明
    re.match(正则表达式,要匹配的字符串) : 尝试从字符串的开始位置来匹配正则表达式,如果从开始位置匹配不成功,match()函数就返回None。

匹配单个字符

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

示例1: .

import re
ret = re.match(".","M")
print(ret.group())
​
ret = re.match("t.o","too")
print(ret.group())
​
ret = re.match("t.o","two")
print(ret.group())

运行结果:

M
too
two

示例2:[ ]

import re
​
# 如果hello的首字符小写,那么正则表达式需要小写的h
ret = re.match("h","hello Python") 
print(ret.group()) # h
​
​
# 如果hello的首字符大写,那么正则表达式需要大写的H
ret = re.match("H","Hello Python") 
print(ret.group()) # H# 大小写h都可以的情况
ret = re.match("[hH]","hello Python")
print(ret.group()) # h
ret = re.match("[hH]","Hello Python")
print(ret.group()) # H
ret = re.match("[hH]ello Python","Hello Python")
print(ret.group()) # Hello Python# 匹配0到9第一种写法
ret = re.match("[0123456789]Hello Python","7Hello Python")
print(ret.group()) # 7Hello Python# 匹配0到9第二种写法
ret = re.match("[0-9]Hello Python","7Hello Python")
print(ret.group()) # 7Hello Python
​
ret = re.match("[0-35-9]Hello Python","7Hello Python")
print(ret.group()) # 7Hello Python# 下面这个正则不能够匹配到数字4,因此ret为None
ret = re.match("[0-35-9]Hello Python","4Hello Python")
# print(ret.group())

运行结果:

h
H
h
H
Hello Python
7Hello Python
7Hello Python
7Hello Python

示例3:\d

import re
​
# 普通的匹配方式
ret = re.match("嫦娥1号","嫦娥1号发射成功") 
print(ret.group())
​
ret = re.match("嫦娥2号","嫦娥2号发射成功") 
print(ret.group())
​
ret = re.match("嫦娥3号","嫦娥3号发射成功") 
print(ret.group())# 使用\d进行匹配
ret = re.match("嫦娥\d号","嫦娥1号发射成功") 
print(ret.group())
​
ret = re.match("嫦娥\d号","嫦娥2号发射成功") 
print(ret.group())
​
ret = re.match("嫦娥\d号","嫦娥3号发射成功") 
print(ret.group())

运行结果:

嫦娥1号
嫦娥2号
嫦娥3号
嫦娥1号
嫦娥2号
嫦娥3

匹配多个字符

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

示例1:*
需求:匹配出,一个字符串第一个字母为大小字符,后面都是小写字母并且这些小写字母可有可无

import re
​
ret = re.match("[A-Z][a-z]*","M")
print(ret.group())
​
ret = re.match("[A-Z][a-z]*","MnnM")
print(ret.group())
​
ret = re.match("[A-Z][a-z]*","Aabcdef")
print(ret.group())

运行结果:

M
Mnn
Aabcdef

示例2:+
需求:匹配出,变量名是否有效

import re
​
names = ["name1", "_name", "2_name", "__name__"]for name in names:
    ret = re.match("[a-zA-Z_]+[\w]*",name)
    if ret:
        print("变量名 %s 符合要求" % ret.group())
    else:
        print("变量名 %s 非法" % name)

运行结果:

变量名 name1 符合要求
变量名 _name 符合要求
变量名 2_name 非法
变量名 __name__ 符合要求

示例3:?
需求:匹配出,0到99之间的数字

import re
​
ret = re.match("[1-9]?[0-9]","7")
print(ret.group())
​
ret = re.match("[1-9]?\d","33")
print(ret.group())
​
ret = re.match("[1-9]?\d","09")
print(ret.group())

运行结果:

7
33
0 # 这个结果并不是想要的,利用$才能解决

示例4:{m}
需求:匹配出,8到20位的密码,可以是大小写英文字母、数字、下划线

import re
​
ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678")
print(ret.group())
​
ret = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66")
print(ret.group())

运行结果:

12a3g4
1ad12f23s34455ff66
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰履踏青云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值