如何使用Python的正则表达式
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,本篇内容主要讲解"如何使用Python的正则表达式",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用Python的正则表达式"吧!一、正则表达式介绍1
千家信息网最后更新 2025年02月02日如何使用Python的正则表达式一、正则表达式介绍
本篇内容主要讲解"如何使用Python的正则表达式",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何使用Python的正则表达式"吧!
一、正则表达式介绍
1.学习爬虫,为什么必须会正则表达式?
有时候,我们爬取一些网页具体内容时,会发现我们只需要这个网页某个标签的一部分内容,或者是这个标签的某个属性的值时,用普通的 xpath 或者css.selector是不能实现我们的想法的,这个时候就必须用到正则表达式去匹配获取。
2.正则表达式官方简介?
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
二、看代码,边学边敲边记正则表达式
day01:
1'''
2author : 极简XksA
3date : 2018.7.27
4goal : 正则表达式
5'''
6
7import re
8
9line = 'jijianXksA123'
10
11# ^a 表示匹配以a开头的字符串(只匹配一次)
12# . 表示该字符可为任意字符(只匹配一次)
13# * 表示前面的字符可以出现任意次(0次或多次)(多次匹配)
14reg_str01 = '^j.*' # 表示以j开头的字符串
15# re.match 函数
16# 第一个参数是匹配的格式
17# 第二参数是要匹配的字符串
18# 返回值为:匹配成功,返回match对象,否则返回:None
19
20if re.match(reg_str01,line) :
21 print("匹配成功!") # reg_str = '^j.*' 匹配成功
22else:
23 print("匹配失败!") # reg_str = '^i.*' 匹配失败
24
25
26# 23$ 表示匹配以23结尾的字符串(只匹配一次)
27reg_str02 = '^j.*23$'
28if re.match(reg_str02,line) :
29 print("匹配成功!") # reg_str = '^j.*23$' 匹配成功
30else:
31 print("匹配失败!") # reg_str = '^j.*13$' 匹配失败
32
33
34line01 = 'boooboaobxby'
35# () 内的为 匹配模式,通过 group函数 可以取出匹配结果
36# 正则表达式贪婪匹配模式:从后面(右边)开始匹配
37reg_str03 = '.*(b.*b).*'
38test01 = re.match(reg_str03,line01)
39if test01:
40 print(test01.group(1)) # result : bxb
41else:
42 print("匹配失败!")
43
44# 正则表达式非贪婪匹配模式:从前面(左边)开始匹配
45# ? : 表示从左边开始匹配,匹配到第一个符合模式的内容,即进入模式
46#
47reg_str03 = '.*?(b.*b).*' # 半贪婪匹配
48reg_str04 = '.*?(b.*?b).*' # 非贪婪匹配
49test01 = re.match(reg_str03,line01)
50test02 = re.match(reg_str04,line01)
51if test01 and test02:
52 print(test01.group(1)) # result : boooboaobxb
53 print(test02.group(1)) # result : booob
54else:
55 print("匹配失败!")
day02:
1'''
2author : 极简XksA
3date : 2018.7.28
4goal : 正则表达式
5'''
6import re
7line01 = 'boooboaobcxby'
8
9def regtest(reg_str,line = line01):
10 test = re.match(reg_str, line)
11 if test:
12 print(test.group(1))
13 else:
14 print("匹配失败!")
15
16# + :表示前面的字符,至少出现一次
17reg_str04 = '.*(b.+b).*' # (b.+b)表示b与b之间至少有一个字符
18regtest(reg_str04) # result : bcxb
19
20# {n} : 控制前面字符出现次数
21# a{2} : 表示a出现两次
22# b{3,4} : 表示b至少出现3次,最多出4次
23# c{4,} : 表示c至少出现4次
24reg_str05 = '.*(b.{2}b).*' # (b.{2}b)表示匹配到的b与b之间,只有两字符
25reg_str06 = '.*(b.{3,4}b).*' # (b.{3,6}b)表示匹配到的b与b之间,至少有3个字符,至多有4个字符
26reg_str07 = '.*(b.{4,}b).*' # (b.{8,}b)表示匹配到的b与b之间,至少有4个字符
27regtest(reg_str05) # result : bcxb
28regtest(reg_str06) # result : boaob
29regtest(reg_str07) # result : boaobcxb
30
31# | :表示 或
32# (abc|123) : 表示匹配到 abc 或者 123,都算匹配成功
33reg_str08 = '.*(boo|abc)'
34reg_str09 = '.*(abc|boo)'
35regtest(reg_str08) # result : boo
36regtest(reg_str09) # result : boo
37
38# [] : 表示 里面包含的内容都可以进行匹配,包含内容只有表面字符含义
39# [abcd] : 表示 只要这个字符为 a/b/c/d中的一个都可以匹配成功
40# [0-9] : 表示 只要这个字符在 0-9 这个区间内,都可以匹配成功
41# [^x] : 表示匹配 字符不为 x
42line02 = '电话号:15573563467'
43reg_str10 = '.*(1[3458][0-9]{9}).*'
44reg_str11 = '.*(1[3458][^1]{9}).*'
45regtest(reg_str10,line02) # result : 15573563467
46regtest(reg_str11,line02) # result : 15573563467
47
48# \s 表示匹配空格,匹配一次
49# \S 表示匹配不是空格的字符,匹配一次
50# \w 表示匹配 A-Z、0-9、_ 中的容易字符,匹配一次
51# \W 与 \w 相反
52# \d 表示数字
53# [\u4E00-\u9FA5] : 表示所有汉字,unicode 编码
54
55def regtest_test(reg_str,line = line01):
56 test = re.match(reg_str, line)
57 if test:
58 print(test.group(1)+':'+test.group(2)+'-'+test.group(3)+'-'+test.group(4))
59 else:
60 print("匹配失败!")
61
62# 简单实例
63str01 = '张三出生于1997年12月20日'
64str02 = '李四出生于1989-01-20'
65str03 = '王五出生于1997/2/5'
66str04 = '赵六出生于1997.12.20'
67str = [str01,str02,str03,str04]
68# 提取出姓名+出生日期
69# 匹配模式
70reg_str12 = '(.*)出生于(\d{4})[.年/-](\d{1,2})[.月/-](\d{1,2}).*?'
71for i in range(4):
72 regtest_test(reg_str12,str[i])
73# result :
74# 张三:1997-12-20
75# 李四:1989-01-20
76# 王五:1997-2-5
77# 赵六:1997-12-20
到此,相信大家对"如何使用Python的正则表达式"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
字符
表达式
正则
成功
内容
模式
b.
贪婪
之间
字符串
少有
学习
代码
函数
参数
只有
开头
标签
空格
网页
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
关于网络安全的服务
访问量过大导致服务器
软件开发服务规格型号
微乐链接服务器失败
江苏科技大学互联网
云服务器防护小技巧
标准版数据库打开i
战舰少女r ios服务器
电信服务器游戏排行榜
数据库食品ppt
计算机网络安全评审
永劫无间服务器好吗
数据库文本框怎么绑定数据
网浪网络技术有限公司苏州
辽宁省网络技术
数据库如何启用sa账户
网络安全的必争之地
软件开发标准员岗位职责
33岁转行学网络安全
语音数据库和语言数据库
浙江商城软件开发定制
流放之路 服务器维护
服务器power灯闪烁开不了机
东莞市鹏远网络技术服务
数据库分库以后怎么访问
不能在安全服务器玩csgo
如今的网络安全吗
什么不是数据库系统的特点
什么是无线数据库营销
云数据库开发者