python正则表达式怎么用,python 如何使用正则表达式(十六)

本文详细介绍了如何在Python中使用re模块进行正则表达式操作,包括单字符、多字符匹配、特殊字符和量词的应用,以及匹配开头结尾、电话号码验证和字符串搜索示例。适合初学者掌握正则表达式的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python中,如何使用正则表达式?

(1)原生模块: re模块(与python解释器直接绑定的,不需要另行下载pip)

(2)被提取的数据文本,他们都是string字符串类型

作用:

1) 爬虫- 提取数据,只是辅助作用,jsonpath,xpath。

2) 后端- 路由的设置url,检验用户的,规范匹配。

注意:正则表达式不属于python,是一个跨语言的。

import re

re.match(pattern, string, flags=0)

6e88ed001c43ab7af5e99745f2aa7937.png

说明:第一个参数:正则表达式,第二个参数:提取的字符串,   最终返回匹配的结果对象

re.match(r'正则表达式(字符串)','要提取的字符串')

result=re.match(r'hello','hello,mike')

print(result)

print(result.group()) # group()方法用来提取匹配成功之后的部分

#如果匹配成功,那么就返回 :

# result=re.match(r'hello3','hello,mike')

# print(result)

#如果匹配不成功,那么就返回 : None

7c88306e26e2e63d012453c84208591b.png

(一) 匹配单个字符

fc11c19de58435530617afb77180d729.png

#(1) \d 只能是任意一位数字

#只能匹配1-5的数字哦!,其他就不符合要求!

# result=re.match(r'熊出没\d','熊出没6')

# print(result)

# print(result.group())

#(2) [] 匹配[]中列举的单个字符

# result=re.match(r'熊出没[1-5]','熊出没6')

# print(result)

# print(result.group())

#大写 ABCDE [A-E]

#小写 abcde [a-e]

# result=re.match(r'熊出没[a-e]','熊出没e')

# print(result)

# print(result.group())

# 注册一个用户名 大写字母 小写字母 数字 下划线

#[A-Za-z0-9_] 等同于> \w

# result=re.match(r'熊出没\w','熊出没A_')

# print(result)

# print(result.group())

# \s 匹配空白, 即 空格 和 tab 键

# result=re.match(r'熊出没\w\s','熊出没V ')

# print(result)

# print(result.group())

# (重点) . 匹配任意1个字符(除了\n之外换行) .*?

result=re.match(r'熊出没.','熊出没V $')

print(result)

print(result.group())

(二) 匹配多个字符

be32f146ad63c9595b38591393484521.png

#熊出没中的数字匹配1位或2位数字

# result=re.match(r'熊出没\d{1,2}','熊出没15')

# print(result)

# print(result.group())

#手机号码11位数字

# result=re.match(r'\d{11}','1389632456') #10位数字,匹配不成功

# result=re.match(r'\d{11}','138963245612') #12位数字,匹配成功,有问题? 没有判断结尾,,,提前匹配结束...

# print(result)

# print(result.group())

'''

重点:

{1,9} 代表他前面那个字符可以出现1-9位 数量

{11} 代表他前面那个字符可以出现11位 数量

'''

#电话号码=>区号-座机号(注意:-可有可无)使用?

#比如: 010-98765432 or 01098765432

# result=re.match(r'010-?\d{8}','010-98765432')

# result=re.match(r'010-?\d{8}','01098765432')

# result=re.match(r'\d{3,4}-?\d{8}','0571-98765432')

# print(result)

# print(result.group())

#如果是多个--,那么就使用*

# result=re.match(r'\d{3,4}-*\d{8}','0571--98765432')

# print(result)

# print(result.group())

#.无法匹配换行符哦

hello='''hello,mike

hello,john

hello,chinese

'''

# result = re.match(r'.*',hello)

# .匹配任务字符 *无数次 >>> re.S 这个参数 可以匹配到换行符

result = re.match(r'.*',hello,re.S)

print(result)

print(result.group())

# result=re.match(r'.*','''0571-

# 98765432''',re.S)

# print(result)

# print(result.group())

#如果使用+,那么-至少出现1次哦!

result=re.match(r'\d{3,4}-+\d{8}','057198765432')

print(result)

print(result.group())

# 这些数字必须有,,不确定数量 >>> 以为着没有数字的话, 是需要匹配不成功

# result = re.match(r'www.baidu.com/\d+', 'www.baidu.com/98765432')

(三) 匹配开头结尾

bff299be09c8f4d5714006238b7847de.png

# ^熊,必须以熊字开头哦!

# 没$ 必须以没字开头哦!

# result=re.match(r'^熊出没$','熊出没')

# print(result)

# print(result.group())

#昵称:

# 1.必须是由字母,数字,下划线组成

# 2.不能以数字开头

while True:

name =input('输入昵称:')

#有且至少有一个开头,[a-zA-Z_0-9]可以没有,也可以有多位 * +?

# result = re.match(r'[a-zA-Z_][a-zA-Z_0-9]*',name)

#(2)注意,必须要加上结尾符号哦!$

result = re.match(r'[a-zA-Z_][a-zA-Z_0-9]*$',name)

# print(result)

if result:

print(f'{name} 符合规范的!')

# print(result.group())

else:

print(f'{name} 必须是由字母,数字,下划线组成.不能以数字开头!')

#注意:match默认匹配开头,没有匹配结尾

# 输入昵称:my#a

# my#a 符合规范的!

# my

27d2d516d3c05deb6eacf6833478b0e8.png

标签:group,re,python,十六,熊出没,正则表达式,result,print,match

来源: https://blog.youkuaiyun.com/hlx20080808/article/details/114285278

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值