python 66:re正则表达式7(全- tcy)
目录:
1.re-概述 https://mp.csdn.net/postedit/85156839
2.re-函数 https://mp.csdn.net/postedit/85156993
3.re-Pattern https://mp.csdn.net/postedit/85157041
4.re-match https://mp.csdn.net/postedit/85157072
5.re-分组 https://mp.csdn.net/postedit/85157147
6.re-扩展符号 https://mp.csdn.net/postedit/85157297
7.re- 预定义字符 https://mp.csdn.net/postedit/85157352
8.re-修饰符 https://mp.csdn.net/postedit/85157464
9.re-实例 https://mp.csdn.net/postedit/85157513
预定义字符:
NO |
类别 |
模式 |
描述 |
实例 |
匹配字符串 |
1 |
分界符 |
[…] |
匹配任意1个字符;逐个列出或给出范围;可以用\w\S等 |
rub[ye] |
匹配 "ruby" 或 "rube" |
特殊字符用作原字符;]和-应该放字符集开头或加\;注1 |
[xyz]No或[a-c]No |
匹配xNo,yNo,zNo ;[a-zA-Z0-9_] |
|||
2 |
功能字符 |
[^...] 反义 |
首字符^表示不在[]中的字符; [a^b] 匹配字符 ’a^b’ |
[^abc] |
匹配除abc 之外字符 |
3 |
功能字符 |
[...]|[...] |
匹配前或后的全部;限定范围用无捕获组 ‘(?: ) |
dog|cat |
匹配dog或cat; r’I have a (?:dog|cat)’ |
预定义字符 |
可写在字符集中[...] |
||||
1 |
预定义字符 |
\d |
1位数字; 等价[0-9] |
a\dc |
a1c |
2 |
预定义字符 |
\D 反义 |
1位非数字 等价[^\d] |
a\Dc |
abc |
3 |
预定义字符 |
\w |
字母数字下划线或汉字 等价[a-zA-Z0-9_] |
a\wc |
abc |
4 |
预定义字符 |
\W 反义 |
非单词字符即特殊字符 等价[^a-zA-Z0-9_] |
a\Wc |
a c |
数量词 |
(用在字符或(…)之后) |
||||
1 |
. |
匹配任意除换行符外1个字符 |
a.c;.* |
abc;任意数量字符不含换行符 |
|
2 |
重复限定符 |
re * 等价{0,} |
匹配前1个字符或表达式0-无限次 注3 |
abc* |
ab,abccc |
3 |
重复限定符 |
re+等价{1,} |
匹配前1个字符或表达式1-无限次 |
abc+ |
abc,abccc |
4 |
重复限定符 |
re? 等价{0,1} |
匹配前1个字符或片段0-1次;在* +? {m,n}后表示非贪婪 |
abc? ; a+? |
ab,abc ;*? +? ?? {m,n}? |
5 |
重复限定符 |
re{m} |
精确匹配前1个字符m次 |
o{2} |
bob不匹配;fooood匹配[oo oo] |
6 |
重复限定符 |
re{ m,} |
匹配m个前面表达式 贪婪方式 |
o{2,} |
bob不匹配;fooood匹配[oooo] |
7 |
重复限定符 |
re{m,n} |
匹配前个字符m-n次;(省略m匹配0-n次)贪婪方式 |
o{1,3} |
bob fooood'匹配['o', 'ooo', 'o'] |
边界匹配 |
|||||
1 |
功能字符 |
^ |
匹配字符串或多行开头 |
^abc |
abc |
2 |
预定义字符 |
\A |
仅匹配全部字符串开头;包括MULTILINE模式 |
\Aabc |
abc |
3 |
功能字符 |
$ |
匹配字符串末尾或后跟换行符的任何位置 |
abc$ |
abc |
4 |
预定义字符 |
\Z |
仅匹配str结束,不匹配其他行 |
abc\Z |
abc |
5 |
预定义字符 |
\b 0长度 |
匹配单词边界;匹配完str不含分界字符; |
\bhi\b |
精确地查找hi这个单词 |
6 |
预定义字符 |
\B 0长度 |
匹配非边界 |
a\Bbc |
abc |
7 |
预定义字符 |
\s |
匹配空白字符[空格\t\r\n\f\v];单词边界;匹配含分界字符 |
a\sc |
a c |
8 |
预定义字符 |
\S 反义 |
非空白字符[^\s] |
a\Sc |
abc |
组 |
|||||
1 |
无命名组 |
(exp) |
匹配括号内的表达式;并捕获文本到自动命名的组里 |
a(1,2,3|4,5,6)c |
a456c “ |”仅在该组中有效 |
2 |
扩展符号 |
(?P<name>exp) |
匹配exp,并捕获文本到name组里 |
(?p<id>abc){2} |
abcabc;也可以写成(?'name'exp) |
3 |
\n |
匹配第n个分组的内容。 |
(\d)abc\1 |
1abc1,5abc5 |
|
4 |
引用 |
(?P=name) |
引用分组name匹配到的字符串(不作为分组) |
(?P<id>\d)abc(?P=id) |
1abc1,5abc5 |
5 |
m.group('') |
当处理匹配对象m时; |
m.group('quote') |
返回指定组内容 |
|
6 |
参数 |
\g<...>或\1 |
用作参数;如传递给repl 参数的字符串中re.sub() |
\g<quote>或\g<1>或\1 |
|
7 |
(p)* ;+;{m,n} |
(pattern)*允许模式重复0次或多次 |
|||
扩展符号 |
|||||
1 |
(?...) |
(…)的不分组版本,用于使用‘|’或后接数量词 |
(?:abc){2} |
abcabc |
|
2 |
扩展符号 |
(? :exp) |
匹配exp,不捕获匹配文本;不分配组号 |
注2 |
|
3 |
条件匹配 |
(?(... )a|b) |
(?(n /name )yes-pattern|no-pattern) 注5 |
(\d)abc(?(1)\d|abc) |
1abc2,abcabc |
4 |
扩展符号 |
(?iLmsux:re) |
在括号中使用i, m, x 可选标志 注4 |
(?i)abc |
ABC |
5 |
扩展符号 |
(?-imx:...) |
括号中不用i, m, x,s 可选标志只影响括号中的区域 |
(?aiLmsux-imsx:...) |
|
6 |
前向界定 |
(?<=常量) 0长度 |
之前str需匹配表达式(结果str除外) |
(?<=\bis)\w+\b,isad1 |
匹配is开头的后半部分(除is部分)ad1 |
7 |
后向界定 |
(?=exp) 0长度 |
之后str需匹配表达式(结果str除外) |
\b\w+(?=ing\b),ssing |
匹配ing结尾前面部分(除ing部分)ss |
8 |
前向非界定 |
(?<!...) 0长度 |
位置的前面不能匹配表达式exp |
(?<![a-z])\d{7} |
匹配前面不是小写字母的七位数字 |
9 |
后向非界定 |
(?!...) 0长度 |
位置的后面不能匹配表达式exp |
\d{3}(?!\d) |
匹配三位数字,三位数字后不是数字 |
10 |
(?#...) |
#后内容注释 |
abc(?#comment)123 |
abc123 |
|
注1:要匹配']'集合中的文字,请在其前面加上反斜杠,或将其放在集合的开头。例如,无论是[()[\]{}]和 []()[{}]都将匹配一个括号 |
|||||
注2:但在执行匹配或稍后在模式中引用后,无法检索组匹配的子字符串 。 |
|||||
注3:重复限定符*+?{m,n}不能直接嵌套。应用第二次重复可用括号。例如,表达式(?:a{6})*匹配六个'a'字符的任意倍数。 |
|||||
注4:iLmsux的每个字符代表一个匹配模式,只影响括号中的区域 |
|||||
注5:如果编号为id/别名为name的组匹配到字符,则需要匹配yes-pattern,否则需要匹配no-pattern;|no-pattern可以省略 |
|||||
注6:子模式后面加上问号,它就变成了可选项r"(http://)?(www\.)?python\.org" |
实例-基本规则:
# 实例1:.
re.findall(r'.+','12\n45\n78') # ['12', '45', '78']
re.findall(r'.+' , '12\n45\n78' , re.S) # ['12\n45\n78']# 实例2:^$
s= '12 34\n56 78\n90'
re.findall( r'^\d+' , s , re.M ) # 匹配位于行首的数字 # ['12', '56', '90']
re.findall( r'\A\d+', s , re.M ) # 匹配位于字符串开头的数字# ['12']
re.findall( r'\d+$' , s , re.M ) # 匹配位于行尾的数字 # ['34', '78', '90']
re.findall( r'\d+\Z' , s , re.M )# 匹配位于字符串尾的数字 # ['90']# 实例3:\b\s
s = 'abc abcde bc bc'
re.findall( r'\bbc\b' , s )# 完全匹配单词 'bc' #['bc', 'bc']
re.findall( r'\sbc\s' , s )# 完全匹配单词 'bc' #[' bc '] 无空格不匹配# '\B' 匹配非边界
re.findall( r'\Bbc\W+' , s )#匹配包含 'bc' 但不以 'bc' 为开头的单词 # ['bc ']# 实例4:(?:)无捕获组
# 将一部分规则作为一个整体对它进行某些操作,比如指定其重复次数时s='ababab abbabb aabaab'
re.findall( r'\b(?:ab)+\b' , s )#匹配字符串中重复的 'ab' # ['ababab']
re.findall( r'\b(ab)+\b' , s ) #成为了一个组 # ['ab']
实例-重复:
# 重复规则形式在一条字符规则后面紧跟一个表示重复次数的规则# 实例1:*+匹配前是字母,后是数字或没有
s = ' aaa bbb111 cc22cc 33dd '
re.findall(r'\b[a-z]+\d*\b', s) # 单词边界 #['aaa', 'bbb111']
re.findall(r'[a-z]+\d*', s) # 单词给拆开 # ['aaa', 'bbb111', 'cc22', 'cc', 'dd'] # 实例2:?匹配一个数字
s = ' 123 10e3 20e4e4 30ee5 '
re.findall( r' \b\d+[eE]?\d*\b' , s )# ['123', '10e3']# 实例3:精确匹配{m}和最小匹配{m,}匹配范围{m,n}
s= '1 22 333 4444 55555 666666 '
re.findall( r'\b\d{3}\b', s ) #精确匹配 m 次 #['333']
re.findall( r'\b\d{3,}\b', s ) #['333', '4444', '55555', '666666']
re.findall( r'\b\d{,3}\b', s ) #['1', '', '22', '', '333', '', '', '', '', '', '', '']
re.findall( r'\b\d{0,3}\b', s ) #['1', '', '22', '', '333', '', '', '', '', '', '', '']
re.findall( r'\b\d{1,6}\b', s ) #['1', '22', '333', '4444', '55555', '666666']
python 66:re正则表达式7(全- tcy)相关推荐
- 05、Python爬虫之正则表达式常用方法(超全)
文章目录 前言 一.search()函数 二.match()函数 三.compile()函数 四.findall()函数 五.sub()函数 六.subn()函数 七.split()函数 八.补充说明 ...
- python | 一篇文章正则表达式全学会
目录 正则表达式的作用 re模块基本用法 1.match与search: 查找第一个匹配 re模块基本用法-raw re模块基本用法-match对象 re模块基本用法-findall 正则替换 re模 ...
- [Python]网络爬虫(七):Python中的正则表达式教程(转)
接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一下Python中的正则表达式的相关内容. 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的神兵利器. ...
- [Python]网络爬虫(七):Python中的正则表达式教程
接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一下Python中的正则表达式的相关内容. 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的神兵利器. ...
- 【Python笔记】正则表达式
正则表达式 行定位符 元字符 限定符 字符类 排除字符 选择字符 转义字符 分组 在 Python 中使用正则表达式语法 行定位符 行定位符就是用来描述子串的边界. "^" 表示行 ...
- python必备基础代码-新手上路必学的Python函数基础知识,全在这里了(多段代码举例)...
原标题:新手上路必学的Python函数基础知识,全在这里了(多段代码举例) 导读:函数是Python中最重要.最基础的代码组织和代码复用方式.根据经验,如果你需要多次重复相同或类似的代码,就非常值得写 ...
- Python 字符串及正则表达式
字符串是所有编程语言在项目开发过程中涉及最多的一个内容.大部分项目的运行结果,都需要以文本的形式展示给客户,比如财务系统的总账报表,电子游戏的比赛结果,火车站的列车时刻表等. 5.1 字符串常用操作 ...
- python中的format什么意思中文-Python中format()格式输出全解
格式化输出:format() format():把传统的%替换为{}来实现格式化输出 1.使用位置参数:就是在字符串中把需要输出的变量值用{}来代替,然后用format()来修改使之成为想要的字符串, ...
- Python中re(正则表达式)模块函数学习
2019独角兽企业重金招聘Python工程师标准>>> Python正则表达式指南 今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的 ...
- Python字符串和正则表达式中的反斜杠(‘\‘)问题
在Python普通字符串中 在Python中,我们用''来转义某些普通字符,使其成为特殊字符,比如 In [1]: print('abc\ndef') # '\n'具有换行的作用 abc defgIn ...
最新文章
- Xamarin XAML语言教程Xamarin.Forms中构建进度条
- POJ-3241 Object Clustering 曼哈顿最小生成树
- 数据中心网络架构和设计指南
- IIR+全通滤波器级联实现系统零相位相移_matlab仿真
- 重启计算机设的桌面背景就没了,桌面壁纸无法保存怎么办?Win7系统重启后不保存桌面背景解决方法...
- mysql合并表快速去重_MySQL数据表合并去重的简单实现方法
- 基于python爬虫技术的应用_基于Python爬虫技术的应用
- Where do SAP CRM HANA Live Querys come from
- matlab求零空间,matlab求矩阵的零空间的一组整数基,该怎样操作?
- 详解Class类文件的结构(上)
- 删除高频分量matlab,关于FFT之后怎么提出该频率分量
- 西安交大计算机技术考研初复试,西安交大计算机考研初试、复试信息
- Netty源码解析1-Buffer 1
- [RHEL5企业级Linux服务攻略]--第11季 NIS服务全攻略
- java scjp考试_Java开发网 - 【经验】今天以96通过SCJP考试(含考试经验和部分真题)[转帖]...
- 烟雾传感器应用程序linux,各种类型烟雾传感器的应用及原理解析
- 第十三届“认证杯”数学中国数学建模比赛赛后体会
- Metasploit -- 各类密码破解
- Android O 自定义prop的问题小总结
- 当图片被压缩时,图片变得模糊