Python 正则介绍
正则表达式是一种小型的,高度专业化的变成语言,在 Python 中,它通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的引擎执行。
findall() 方法,所有匹配的结果都返回到一个列表里
import re
res = re.findall('klvchen', 'hello ,My name is klvchen. Are you ok?')
print(res)
运行结果:
['klvchen']
原字符: . ^ $ * + ? { } [ ] | ( ) \
. 只能代指任意一个字符
import re
res = re.findall('w..l', 'hello world')
print(res)
运行结果:
['worl']
res = re.findall('w..l', 'hello w\t ld')
print(res)
运行结果:
['w\t l'] # \t 空格也是属于一个字符
^ 以后面一个字符开头
import re
res = re.findall('^h...o ', 'hello world')
print(res)
运行结果:
['hello']
$ 以前面一个字符结尾
import re
res = re.findall('wo..d$', 'hello,world')
print(res)
运行结果:
['world']
* 重复匹配前面一个字符 (0个或多个), 默认是贪婪匹配
import re
res = re.findall('ba*', 'urtslkfslabaaaa')
print(res)
运行结果:
['baaaa']
res = re.findall('ba*?', 'urtslkfslabaaaa') # 后面加 ? 号使其变成惰性匹配
print(res)
运行结果:
['b']
+ 重复匹配前面一个字符(1个或多个), 默认是贪婪匹配
import re
res = re.findall('a+b', 'urtslkfslabaaaa')
print(res)
运行结果:
['ab']
? 重复匹配前面一个字符(0个或1个)
import re
res = re.findall('a?b', 'urtblkfslabaaaa')
print(res)
运行结果:
['b', 'ab']
{n, m} 匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式
import re
res = re.findall('a{3}', 'aaab')
print(res)
运行结果:
['aaa']
res = re.findall('a{1,2}', 'aaab')
print(res)
运行结果:
['aa', 'a']
[] 用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k', 取消元字符的特殊功能
import re
res = re.findall('a[b,c]d', 'acd')
print(res)
运行结果:
['acd']
res = re.findall('[a-zA-Z]', 'acd')
print(res)
运行结果:
['a', 'c', 'd']
res = re.findall('[w,*]', 'klwdx*')
print(res)
运行结果:
['w', '*']
res = re.findall('[w,,]', 'klwdx*,')
print(res)
运行结果:
['w', ',']
res = re.findall('[1-9]', 'hsdl1dsfsf56')
print(res)
运行结果:
['1', '5', '6']
res = re.findall('[1-9,a-z,A-Z]','12klvCHEN')
print(res)
运行结果:
['1', '2', 'k', 'l', 'v', 'C', 'H', 'E', 'N']
^ 在 [] 里,取反
import re
res = re.findall('[^1,2]','h1w 2')
print(res)
运行结果:
['h', 'w', ' ']
() 代表着一个整体
import re
res = re.findall('www.(\w+).com','www.baidu.com') #返回()的内容
print(res)
运行结果:
['baidu']
res = re.findall('www.(?:\w+).com','www.baidu.com') #返回整体
print(res)
运行结果:
['www.baidu.com']
| 模式 | 说明 |
|---|---|
| \d | 匹配任何十进制数,相当于 [0-9] |
| \D | 匹配任何非十进制数,相当于 [ ^0-9 ] |
| \s | 匹配任何空白字符,相当于 [ \t\n\r\f\v] |
| \S | 匹配任何非空白字符,相当于 [ ^\t\n\r\f\v ] |
| \w | 匹配任何字母数字字符,相当于 [a-zA-Z0-9] |
| \W | 匹配任何非字母数字字符,相当于 [ ^a-zA-Z0-9 ] |
| \b | 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 |
import re
res = re.findall('\d{11}', 'abcd123456789098765')
print(res)
运行结果:
['12345678909']
res = re.findall('\sabc', 'hello abc')
print(res)
运行结果:
[' abc']
res = re.findall('\w', 'he llo')
print(res)
运行结果:
['h', 'e', 'l', 'l', 'o']
res = re.findall(r'I\b', 'hello,I am klvchen')
print(res)
运行结果:
['I']
res = re.findall(r'\\','ab\cde')
print(res)
运行结果:
['\\']
search 方法,返回匹配到的第一个对象(object), 需要调用group()返回结果
import re
res = re.search('kl', 'hello, my name is klvchen')
print(res)
print(res.group())
运行结果:
<_sre.SRE_Match object; span=(18, 20), match='kl'>
kl
res = re.search('a\.', 'a.jpg').group()
print(res)
运行结果:
a.
res = re.search('(as)+','sdfsafasksas').group()
print(res)
运行结果:
as
res = re.search('(as)|3','abas8as').group()
print(res)
运行结果:
as
res = re.search('(?P<id>\d{4})','hello,12345678') #(?P<名字>正则)这是固定格式,然后可以通过名字调用
print(res.group('id'))
运行结果:
1234
res = re.search('(?P<id>\d{4})/(?P<name>\w{2})','hello,12345678/klvchen')
print(res.group('id'))
print(res.group('name'))
运行结果:
5678
kl
match() 方法,仅在字符串开始的地方匹配,返回匹配到的第一个对象(object), 需要调用group()返回结果
import re
res = re.match('abc','aabcdabc')
print(res)
运行结果:
None
res = re.match('abc','abcdabc')
print(res.group())
运行结果:
abc
split() 方法
import re
res = re.split('[b,f]','abcdefghij') # 先切割 b ,再对剩下的字符串以 f 进行切割
print(res)
运行结果:
['a', 'cde', 'ghij']
sub() 方法
import re
res = re.sub('k.v','abc','klvchen')
print(res)
运行结果:
abcchen
res = re.sub('\d','8','k1v2chen',1) # 只替换一次
print(res)
运行结果:
k8v2chen
compile() 方法
obj = re.compile('\.com')
res = obj.findall('ab.comdefg')
print(res)
运行结果:
['.com']
finditer() 方法
res = re.finditer('\d', 'ab3cd4gh5jk')
print(res)
print(next(res).group())
print(next(res).group())
运行结果:
<callable_iterator object at 0x0000013DFF84CD30>
3
4
Python 正则介绍的更多相关文章
- Python正则式的基本用法
Python正则式的基本用法 1.1基本规则 1.2重复 1.2.1最小匹配与精确匹配 1.3前向界定与后向界定 1.4组的基本知识 2.re模块的基本函数 2.1使用compile加速 2.2 ma ...
- python 正则,常用正则表达式大全
Nginx访问日志匹配 re.compile #re.compile 规则解释,改规则必须从前面开始匹配一个一个写到后面,前面一个修改后面全部错误.特殊标准结束为符号为空或者双引号: 改符号开始 从 ...
- 从零开始学Python第0周:Python基本介绍(部分内容来源于网络)
Python入门介绍 一,Python的基本介绍 (1)概要 Python是一种解释型,面向对象,动态数据类型的高级程序设计语言.常被广泛用于处理系统管理任务和web编程.现如今Python已经成为了 ...
- python 正则使用笔记
python正则使用笔记 def remove_br(content): """去除两边换行符""" content = content.r ...
- Python正则处理多行日志一例
正则表达式基础知识请参阅<正则表达式基础知识>,本文使用正则表达式来匹配多行日志并从中解析出相应的信息. 假设现在有这样的SQL日志: SELECT * FROM open_app WHE ...
- 【转】Python Twisted介绍
Python Twisted介绍 作者:Jessica McKellar 原文链接 Twisted是用Python实现的基于事件驱动的网络引擎框架.Twisted诞生于2000年初,在当时的网络游戏开 ...
- 【美妙的Python之中的一个】Python简单介绍及环境搭建
美妙的Python之Python简单介绍及安装 简而言之: Python 是能你无限惊喜的语言,与众不同. 1.Python: ...
- Python正则匹配字母大小写不敏感在读xml中的应用
需要解决的问题:要匹配字符串,字符串中字母的大小写不确定,如何匹配? 问题出现之前是使用字符串比较的方式,比如要匹配'abc',则用语句: if s == 'abc':#s为需要匹配的字符串 prin ...
- python模块介绍- multi-mechanize 性能测试工具
python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ...
随机推荐
- windows 批处理语言学习
程序员应该根植于心的一个理念是:重复的工作交给代码.windows上的批处理脚本就是这种理念的体现. 批处理bat能做的事很多,自动配置vs工程中的代码依赖环境,调用其它程序处理数据.自动编译代码等等 ...
- iOS逆向之Reveal
Reveal是一个强大的UI分析工具,使用它可以查看各个界面的视图层级,在解决界面显示问题时非常有用.它最大的特点就是非常直观,查看UI布局的时候非常方便. 我们知道,Reveal官网提供的方法只能监 ...
- Baidu WebUploader 前端文件上传组件的使用
简介 WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流I ...
- 修改hosts文件用来观看coursera视频
52.84.246.90 d3c33hcgiwev3.cloudfront.net 52.84.246.252 d3c33hcgiwev3.cloudfront.net 52.84.246.144 d ...
- Springboot中读取.yml文件
自定义配置文件application-dev.yml spring: dataresource: druid: driver-class-name: com.mysql.jdbc.Driver url ...
- Xamarin.Android 使用 Encoding.GetEncoding("GB2312") 报错解决方案
问题描述:使用byte转换成汉字编码格式,debug模式下可以正常运行,但是release模式下就会出现死机问题. 排除过程:最开始不知道是编码格式转换错误,于是把相关代码块注释掉,然后进行relea ...
- CSS--最最最基础操作
CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. h1 {color:red; font-size:14px;} css的四种引入方式 1.行内式 行内式是在标记的style属性中设定 ...
- mysql 开发进阶篇系列 32 工具篇(mysqladmin工具)
一.概述 mysqladmin是一个执行管理操作的客户端程序.用来检要服务的配置和当前的状态,创建并删除数据库等.功能与mysql客户端类似,主要区别在于它更侧重于一些管理方面的功能.1. 查找mys ...
- vmware workstation 提示程序包可能有错,错误代码 29141 & 提示不可恢复错误: (vcpu-0)
问题一:提示程序包可能有错,错误代码 29141 换了n个版本(vmware workstation 10,11, 12),下载了n次,都提示该错误(29141),明明程序包没错啊, 一开始还怀疑是我 ...
- jsp 假分页的实现
原本做毕设做了一堆表格需要读出数据.为了以后的数据可能会很多做准备,这里实现一个以基于jsp页面实现的假分页. 假分页:实际上数据库一次过把所有数据读出来,通过对输出展示的控制来实现对数据分页的假象. ...