正则表达式笔记

匹配单个字符


1. 匹配某个字符
# 示例:
ret = re.match("he", text)
print(ret.group())

2. 点:匹配字符

text = "hello"
ret = re.match(".", text)
print(ret.group())

3. \d:匹配任意数字【0-9】

text = "123456"
ret = re.match("\d", text)
print(ret.group())

4. \D:匹配任意非数字

text = "+"
ret = re.match("\D", text)
print(ret.group())

5. \s:匹配空白字符(\n, \t, \r, 空格)

text = " \r "
ret = re.match("\s", text)
print(ret.group())

6. \w:匹配的是a-z 和 A-Z 以及数字和下划线

text = "asd"
ret = re.match("\w", text)
print(ret.group())

7. \W:匹配的是与\w正好相反

text = ";"
ret = re.match("\W", text)
print(ret.group())

8. []:表示组合方式,只要满足中括号中的字符 ,就可以匹配;

text = "0821-88888888"
ret = re.match('[\d\-]+', text) # + :代表,要符合[]规则里面的所有数据
print(ret.group())

8.1. []的形式代替\d

text = "-da1"
ret = re.match('[^0-9]+', text) # ^ :代表非^后面的规则的所有数据
print(ret.group())

8.2 []的形式代替\w

text = "_"
ret = re.match('[a-zA-Z0-9_]', text)
print(ret.group())

8.3. []的形式代替\W

text = "+"
ret = re.match('[^a-zA-Z0-9_]', text)
print(ret.group())


################ 匹配多个字符 ##############

9 . *: 可以匹配0个或者个任意多个字符
text = "adfa123"
ret = re.match('\d*', text)
print(ret.group())

10.  +:匹配1个或者多个字符,至少要匹配1个字符

text = "adsf+asdf"
ret = re.match('\w+', text)
print(ret.group())

11. :匹配一个或者0个(要么没有,要么就只有1个)

text = "ads+asdf"
ret = re.match('\w?', text)
print(ret.group())

12. {m}: 匹配m个字符

text = "ads+asdf"
ret = re.match('\w{2}', text)
print(ret.group())

13. {m , n}: 匹配m-n个字符

text = "adsaadd"
ret = re.match('\w{1,5}', text)
print(ret.group())

14. ^(脱字号):在[]中表示取反;其它情况要从第一个字符中判断,如果不满足要求,则后面就不在匹配

text = "hello"
ret = re.match('^h', text)
print(ret.group())

15. &:表示以某某结尾

text = "XXXX@163.com"
ret = re.match('\w+@163.com$', text) # 取以163.com结尾才进行匹配
print(ret.group())

16. |: 匹配多个字符串或者表达式

text = "http"
ret = re.match('(http|https|ftp)', text)
print(ret.group())

17. 贪婪模式(尽量匹配多个字符) 与非贪婪模式(只会匹配最小的那个条件, 加个?号)

text = "0123456"
ret = re.match('\d+?', text) #非贪婪模式, 去掉? 就是贪婪模式
print(ret.group())

text = "<h1>标题<h1>"
ret = re.match('<.+?>', text)
print(ret.group())

########## 小案例 #########

# 1. 验证手机号码
text = "18212364589"
ret = re.match('1[34578]\d{9}', text)
print(ret.group())

2. 验证邮箱

text = "test123_@qq.com.cn"
ret = re.match('\w+@[a-z0-9]+\.[a-z]+', text)
print(ret.group())

3. 验证URL

text = "https://www.kuaidaili.com/free/intr/"
ret = re.match('(http|https|ftp)://[^\s]+', text)  # | 代表或的意思,有多个要用()-->((http|https|ftp))
print(ret.group())

4. 验证身份证

text = "51082420200101711x"
ret = re.match('\d{17}[\dxX]', text)  # | 代表或的意思,有多个要用()-->((http|https|ftp))
print(ret.group())

5. # 匹配0-100之间的数据

# 可以出现:1, 2, 3, 10, 100

# 不能出现:09, 101

text = "100"
ret = re.match('[1-9]\d?$|100$', text)  # | 代表或的意思,有多个要用()-->((http|https|ftp))
print(ret.group())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值