python中正则表达式
正则表达式是一种通用的字符串匹配技术,是不会因为编程语言不一样而发生变化的
如果想查找对应规则的字符串,就可以用正则表达式
python中要使用正则表达式需使用re模块,它是正则表达式在python中的封装
1.匹配的方式:match、search、findall
1.1 match 表示: 从开始的位置进行匹配,即从第一个字符开始匹配,第一个没有匹配到,则整个就不会匹配到
# 匹配特定的字符串 "abc"
import re re_pattern = r'abc'#写匹配规则式时,要加上转意字符r
res = re.match(re_pattern, "abwofowpqfowfjowefjiwoefabcowof")
# 从 "wofowpqfowfjowefjiwoefabcowof" 这个字符串当中匹配是否 有 re_pattern
# match 表示: 从开始的位置进行匹配,即从第一个字符开始匹配,第一个没有匹配到,则整个就不会匹配到
print(res)
1.2search 全文匹配,如果表达式有多处可以匹配到,只会返回第一个匹配到的结果
# search, 全文匹配,如果表达式有多处可以匹配到,只会返回第一个匹配到的结果
res = re.search(re_pattern, "abcwofowpqfowfjowefjiwoefabcowof")
print(res)
1.3findall 全部匹配,如果表达式有多处可以匹配到,结果也会返回多个
# findall, 全部匹配,如果表达式有多处可以匹配到,结果也会返回多个
res = re.findall(re_pattern, "abcwofowpqfowfjowefjiwoefabcowof")
print(res)
2.语法
2.1 [abc] 匹配中括号中的任意一个字符
# [abc], 匹配中括号中的任意一个字符
re_pattern = r'[abc]',
res = re.findall(re_pattern, "abcwofowpqfowfjowefjiwoefabcowof")
print(res)
2.2 .匹配任意一个字符串 除了 \n
# . 匹配任意一个字符
re_pattern = r'.',
res = re.findall(re_pattern, "abcwofowpqfowfjowefjiwoefabcowof")
print(res)
2.3 \d 匹配数字,相当于[0-9]
# \d 匹配数字 data,相当于[0-9]
re_pattern = r'\d'
res = re.findall(re_pattern, "a123bcwofowpqfowfjowefjiwoefabcowof")
print(res)
2.4 \D 匹配非数字
# \D 匹配非数字 data
re_pattern = r'\D'
res = re.findall(re_pattern, "a@123bcwofowpqfowfjowefjiwoefabcowof")
print(res)
2.5 \w 匹配字母、数字、下划线 相当于[A-Za-z0-9_]
# \w 匹配字母,数字,下划线
re_pattern = r'\w'
res = re.findall(re_pattern, "a@_123bcwofowpqfowfjowefjiwoefabcowof")
print(res)
2.6 \W 反向的, 非匹配字母,数字,下划线
2.7{}匹配花括号当中次数,一般要和其他的规则配合使用
# 匹配花括号当中的数字次, 匹配几次,
re_pattern = r'\d{2}'
res = re.findall(re_pattern, "aa@_123b&cwofowpqfowfjowefjiwoefabcowof")
print(res)
2.8 {2, } 匹配至少 2 次
# {2, } 匹配至少 2 次
# TODO: 正则表达式当中,千万不要手残,空格不能随便打
# 贪婪模式, python 当中
re_pattern = r'\w{2,}'
res = re.findall(re_pattern, "aa@_123b&cwofowpqfowfjowefjiwoefabcowof")
print(res)
2.9 {,2} 匹配最多 2 次
# {,2} 匹配最多 2 次
re_pattern = r'\w{,2}'
res = re.findall(re_pattern, "aa@_123b&cwofowpqfowfjowefjiwoefabcowof")
print(res)
2.10 {2,4} 匹配 2 -4 次,最少匹配2,最多匹配4次
# {2,4} 匹配 2 -4 次,最少匹配2,最多匹配4次
re_pattern = r'\w{2,4}'
res = re.findall(re_pattern, "aa@_123b&cwofowpqfowfjowefjiwoefabcowof")
print(res)
例子:匹配手机号码
# 如何去匹配一个手机号码
# re_pattern = r'1[35789]\d{9}'
# res = re.findall(re_pattern, "aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
# print(res)
2.11 *匹配0次或者任意次,通配符
# # * 匹配 0 次或者任意次, 通配符,
# re_pattern = r'\d*'
# res = re.findall(re_pattern, "aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
# print(res)
2.12 + 匹配1次或者任意次数,通配符
# + 匹配 1 次或者任意次, 通配符,
# re_pattern = r'\d+'
# res = re.findall(re_pattern, "aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
# print(res)
2.13 ? 匹配 0 次或者 1 次,非贪婪模式
# ? 匹配 0 次或者 1 次
re_pattern = r'\d?'
res = re.findall(re_pattern, "aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
print(res)
2.14 ^开头
# ^ 开头
re_pattern = r'^\d'
res = re.findall(re_pattern, "1aa@_123b&cwo17520208510fowpqfowfjowefjiwoefabcowof")
print(res)
2.15 $结尾
# # $结尾
# re_pattern = r'\d*$'
# res = re.findall(re_pattern, "jiwoefabcowof3434")
# print(res)
2.16组,findall中是用括号表示
search中用.group()表示
# # 组,如果你要匹配的内容,显示出来不包含首位的字符,可以加上括号
re_pattern = r'#(.*?)#'
res = re.findall(re_pattern, mystr)
print(res)
3.替换 re.sub()
# # 替换 re.sub() 替换操作(正则表达式,替换成的字符串,被替换的字符串)
# mystr = re.sub(re_pattern, 'me123', mystr, 1)
python中正则表达式的更多相关文章
- python 中 正则表达式 的应用
python 中 正则表达式 的应用 最近作业中出现了正则表达式,顺便学习了一下. python比较厉害的一点就是自带对正则表达式的支持,用起来很方便 正则表达式 首先介绍一下什么是正则表达式. 正则 ...
- 第11.20节 Python 中正则表达式的扩展功能:后视断言、后视取反
一. 引言 在<第11.19节 Python 中正则表达式的扩展功能:前视断言和前视取反>中老猿介绍了前视断言和前视取反,与二者对应的还有后视断言和后视取反. 二. (?<=-)后视 ...
- python中正则表达式 re.findall 用法
在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配. 其中,re.findall() 函数可以遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表. 在python源代码中 ...
- python中正则表达式re模块详解
正则表达式是处理字符串的强大工具,它有自己特定的语法结构,有了它,实现字符串的检索,替换,匹配验证都不在话下. 当然,对于爬虫来说,有了它,从HTML里提取想要的信息就非常方便了. 先看一下常用的匹配 ...
- python中正则表达式在中文字符串匹配时的坑
之前一直有使用python 正则表达式来做中文字符串或者中英文数字混合的字符串的匹配,发现有不少情况下会匹配失灵或者结果混乱,并且在不同操作系统上匹配结果也不一致,查了很久都不知道是什么原因.今天终于 ...
- js中正则表达式与Python中正则表达式的区别
今天女票让我帮她写一个js中的正则,来提取电话号码,对于正则规则来说,js与python是基本没有区别的,重点的区别是在一些函数与方法中. python中的正则提取: import re str = ...
- Python中正则表达式讲解
正则表达式是匹配字符串的强大武器,它的核心思想是给字符串定义规则,凡是符合规则的字符串就是匹配了,否则就是不合法的.在介绍Python的用法之前,我们先讲解一下正则表达式的规则,然后再介绍在Pytho ...
- 关于Python中正则表达式的反斜杠问题
之前总是搞不明白正则表达式中的反斜杠的问题.今天经过查阅资料终于搞明白了. 其中最重要的一点就是Python自己的字符串中定义的反斜杠也是转义字符,而正则表达式中的反斜杠也是转义字符,所以正则表达式中 ...
- 第11.21节 Python 中正则表达式的其他扩展功能
一. 引言 在<第11.17节 Python 正则表达式扩展功能:命名组功能及组的反向引用>中老猿介绍了组匹配模式的命名组功能及引用组功能,这两者都是正则表达式的扩展功能,其实在re模块中 ...
随机推荐
- PowerShell类grep
PowerShell类grep 方法一: windows下没有grep不过有findstr, 功能差不多 方法二: powershell自带的正择功能 xxx | where {$_ -match & ...
- SpringBoot整合Apache-CXF实践
一.Apache CXF是什么? Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS . ...
- VMware Workstation Pro 虚拟机安装
1.简介 虚拟机指通过软件莫比的具体有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 我们可以通过虚拟机软件,可以在一台物理计算机模拟出一台或多台虚拟的计算机,这些虚拟的计算机完全就像 ...
- 自动化运维Ansible-01-安装及简单的使用
实验环境:Centos 7.x Ansible版本:ansible 2.9.13 服务端的操作 1.系统默认的yum仓库中没有找到ansible,这里我们先安装epel源(需要用到CentOS-Bas ...
- LoRa技术的发展应用和LoRa应用设备
LoRa技术的发展应用 LORA技术大约在十年前由法国和瑞士开发,到现今LORA技术已经是物联网发展应用中不可缺少的一部分,根据中国物联网研究与发展中心的数据,2025年我国物联网产业规模将达到2万亿 ...
- 如何使用捷映App制作朋友圈九宫格视频图片合集
在刷朋友圈的过程中,看到九宫格的视频图片合集,带有酷炫的音效和动效,展现效果非常好,那么我们该如何制作呢?下面我为大家介绍. 第一步,我们需要在各大应用市场搜索[捷映视频制作]App,点击[安装]. ...
- hadoop使用实例
一.词频统计 1.下载喜欢的电子书或大量文本数据,并保存在本地文本文件中 2.编写map与reduce函数 3.本地测试map与reduce 4.将文本数据上传至HDFS上 5.用hadoop str ...
- python开发基础(二)常用数据类型调用方法
1 数字: int 2 3 int : 转换,将字符串转化成数字 4 num1 = '123' 5 num2 = int (a) 6 numadd = num2 +1000 7 print(num2) ...
- 没有磁盘空间 No space left on device
INSTALL 的解释文件 帮助文件 这里的 pytorch=1.0.1 torchvision=0.2.2 cudatoolkit=9.0,这个ATSS可以运行. 这里最好能够查看一下cuda的版本 ...
- 微信小程序获取请求数据
<%@ WebHandler Language="C#" Class="CodeTest" %> using System; using Syste ...