正则表达式:教你使用re模块

概述 

正则表达式使用场景:

1.验证客户端用户输入的数据是否符合规范

2.爬取到网页内容后,精准挑选出我们要的信息

3.在一个文件中,找到含有itcast的语句

re模块操作

import re

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

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

示例:

import re

result = re.match("itprojects", "itprojects.cn")

ret = result.group()
print(ret)

运行结果为:

itprojects

 匹配字符(重点

字符

功能

^

匹配字符串的开头

$

匹配字符串的末尾。

.

匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。

[...]

用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k'

[^...]

不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。

re*

匹配0个或多个的表达式。

re+

匹配1个或多个的表达式。

re?

匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式(下面说明)

re{ n}

匹配n个前面表达式。例如,"o{2}"不能匹配"Bob"中的"o",但是能匹配"food"中的两个o。

re{ n,}

精确匹配n个前面表达式。例如,"o{2,}"不能匹配"Bob"中的"o",但能匹配"foooood"中的所有o。"o{1,}"等价于"o+"。"o{0,}"则等价于"o*"。

re{ n, m}

匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式

a| b

匹配a或b

\w

匹配数字字母下划线

\W

匹配非数字字母下划线

\s

匹配任意空白字符,等价于 [\t\n\r\f]。

\S

匹配任意非空字符

\d

匹配任意数字,等价于 [0-9]。

\D

匹配任意非数字

以上是比较常用的 。

解释一下什么是贪婪方式

比如一个字符串s = 'booobby',我想提取前两个'b'及其中间夹的子串

import re
s = 'booobby'
regular_expression = '.*(b.*b)'
ret = re.match(regular_expression,s)
print(ret.group(1))

输出的结果就是bb

贪婪可以认为它是从后往前找的,但是输出的顺序不变。

import re

s = 'booobacby'
regular_expression = '.*(b.*b)'
print(re.match(regular_expression , s).group(1))

输出结果是bacb

那么我们想要前面的booob该怎么办?

就是在两个b前面加一个?,注意两个都要加。

让我们来匹配一个163.com的邮箱地址

import re

email_list = ["xiaoWang@163.com", "xiaoWang@163.comheihei", ".com.xiaowang@qq.com"]

for email in email_list:
    ret = re.match("[\w]{4,20}@163\.com", email)
    if ret:
        print("%s 是符合规定的邮件地址,匹配后的结果是:%s" % (email, ret.group()))
    else:
        print("%s 不符合要求" % email)

'''
我来解释一下
[\w]{4,20}表示匹配数目大于等于4且小于等于20的任意字母、数字、下划线
等价于[a-zA-Z_]
\.就是转义,匹配一个.
'''

是不是很简单?

想了解re常用的几个函数请看下一篇文章:

正则表达式:re常用的几个函数-CSDN博客

补充材料:

修饰符

描述

re.I

使匹配对大小写不敏感

re.L

做本地化识别(locale-aware)匹配

re.M

多行匹配,影响 ^ 和 $

re.S

使 . 匹配包括换行在内的所有字符

re.U

根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.

re.X

该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

每天睡够24小时_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值