python 正则表达式基础

简介: python 正则表达式基础

背景

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,由于其简单的语法、强大的工具库等优势被很多人青睐,应用于各个行业之中。

准备

安装 Python 解释器/anaconda。
安装 jupyter lab。
新建 notebook(python3)文件。
已导入re模块。

匹配数字

# 匹配文本中的所有数字
str_ = "996.ICU 指工作 996、生病 ICU,也就是工作从早上 9 点上班到晚上 9 点下班,每周工作 6 天,
生病了就住进 ICU"
num1 = re.findall(r'\d+', str_) # 使用\d 匹配数字,+表示匹配多次
print(num1)
num2 = re.findall(r'[0-9]{1,3}', str_) # 正则表达式不唯一,可以使用[]指定匹配元素的范围
{}指定次数
print(num2)

输出:
['996', '996', '9', '9', '6']
['996', '996', '9', '9', '6']

匹配字符

使用\w 可以匹配数字字母下划线:

str_ = "996.ICU 指工作 996、生病 ICU,也就是工作从早上 9 点上班到晚上 9 点下班,每周工作 6 天,
生病了就住进 ICU"
s1 = re.findall(r'\w+', str_)
s1

输出:
['996', 'ICU 指工作 996', '生病 ICU', '也就是工作从早上 9 点上班到晚上 9 点下班', '每周工作 6天', '生病了就住进 ICU']

使用\S 匹配任意非空字符:

s2 = re.findall(r'\S+', str_)
s2

输出:
['996.ICU 指工作 996、生病 ICU,也就是工作从早上 9 点上班到晚上 9 点下班,每周工作 6 天,生病了就住进 ICU']

只匹配英文字母:

#在文本中匹配英文
s3 = re.search(r'[A-Za-z]+', str_).group()
print(s3)

输出:
ICU

匹配任意的非数字字符\D:

s4

输出:
['.ICU 指工作', '、生病 ICU,也就是工作从早上', '点上班到晚上', '点下班,每周工作', '天,生病了就住进 ICU']

只匹配中文:

匹配文本中的所有汉字

s5 = re.findall(r'[\u4e00-\u9fa5]{1,}', str_)
print(s5)

输出:
['指工作', '生病', '也就是工作从早上', '点上班到晚上', '点下班', '每周工作', '天', '生病了就住进']
\u4e00 和\u9fa5 两个 unicode 值正好是 Unicode 表中的汉字的头和尾。

匹配符号

# 匹配文本中的所有符号
s6 = re.findall(r'\W+', str_)
print(s6)

输出:
['.', '、', ',', ',', ',']

应用

步骤 1 匹配文本信息中的邮箱信息

匹配文本中的邮箱

str_ = "我的邮箱是 python996@icu.com"
s = re.findall(r'[A-Za-z0-9]+@[A-Za-z0-9]+\.com', str_)
print(s)

输出:
['python996@icu.com']

匹配网址 URL

str__ = "我的个人主页:https://www.python.org"
s = re.findall(r'[a-zA-z]+://[^\s]*', str__)
print(s)

输出:
['https://www.python.org']

匹配身份证号码

str__ = "我的身份证号码是 12345678901234567X"
s = re.findall(r'(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)', str__)
print(s)
print(''.join(s[0]))

输出:
[('123456', '7890', '12', '34', '567', 'X')]
12345678901234567X

匹配手机号码

str__ = "我的手机号是 13012345678"
s = re.findall(r'\d{3}\d{8}|\d{4}\{7,8}', str__)
print(s)

输出:
['13012345678']

贪婪模式下的匹配

html = "aa<div>test1</div>bb<div>test2</div>cc "
res = re.search("<div>.*</div>",html)
print(res.group())

输出:

test1
bb
test2

非贪婪模式下的匹配

html = "aa<div>test1</div>bb<div>test2</div>cc "
res = re.search("<div>.*?</div>",html)
print(res.group())

输出:

test1
目录
相关文章
|
3月前
|
Python
"揭秘!Python如何运用神秘的正则表达式,轻松穿梭于网页迷宫,一键抓取隐藏链接?"
【8月更文挑战第21天】Python凭借其强大的编程能力,在数据抓取和网页解析领域表现出高效与灵活。通过结合requests库进行网页请求及正则表达式进行复杂文本模式匹配,可轻松提取网页信息。本示例展示如何使用Python和正则表达式解析网页链接。首先确保已安装requests库,可通过`pip install requests`安装。接着,利用requests获取网页内容,并使用正则表达式提取所有`&lt;a&gt;`标签的`href`属性。
46 0
|
9天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
24 5
|
14天前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
1月前
|
Python
【收藏备用】Python正则表达式的7个实用技巧
【收藏备用】Python正则表达式的7个实用技巧
22 1
|
1月前
|
数据安全/隐私保护 Python
Python实用正则表达式归纳
Python实用正则表达式归纳
|
1月前
|
Python
Python 正则表达式高级应用指南
正则表达式是文本模式匹配的强大工具,Python 的 `re` 模块支持其操作。本文介绍正则表达式的高级应用,包括复杂模式匹配(如邮箱、电话号码)、分组与提取、替换操作、多行匹配以及贪婪与非贪婪模式的区别。通过示例代码展示了如何灵活运用这些技巧解决实际问题。
29 7
|
1月前
|
JavaScript 前端开发 Scala
Python学习十:正则表达式
这篇文章是关于Python中正则表达式的使用,包括re模块的函数、特殊字符、匹配模式以及贪婪与非贪婪模式的详细介绍。
18 0
|
1月前
|
数据采集 开发者 Python
Python正则表达式之re.compile函数
`re.compile`是Python正则表达式处理中一个强大的工具,它通过预先编译正则表达式,不仅提升了执行效率,还增强了代码的组织性和可读性。掌握其使用,对于涉及文本分析、数据清洗、日志处理等领域的Python开发者来说,是非常必要的技能。正确并高效地应用这一功能,可以显著提升程序的性能和维护性。
75 0
|
2月前
|
索引 Python
30天拿下Python之正则表达式
30天拿下Python之正则表达式
17 0
|
2月前
|
数据采集 Python
Python正则表达式提取车牌号
Python正则表达式提取车牌号