Python 正则
Posted Sil
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 正则相关的知识,希望对你有一定的参考价值。
Match 对象的属性
.string 待匹配的文本
.re 匹配是使用的pattern对象(正则表达式)
.pos 正则表达式搜索文本的开始位置
.endpos 正则表达式搜索文本的结束位置
Match 对象的方法
.group() 获得匹配后的字符串
.start() 匹配字符中的原始字符串的开始位置
.end() 匹配字符串的原始字符串的结束位置
.span() 返回(.start(),.end())
Re库主要功能函数
re.search(pattern,string,flags=0)
在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
pattern:正则表达式的字符串或者原生字符串表示
string:待匹配字符串
flags:正则表达式使用时的控制标记
re.I re.IGNORECASE 忽略正则表达式的大小写,[A-Z]能够匹配小写字符
re.M re.MULTILINE 正则表达式中的 ^ 操作符能够将给定字符串的每行当作匹配开始
re.S re.DOTALL 正则表达式中的 . 操作符能够匹配所以字符,默认匹配除换行外的所有字符
re.match(pattern,string,flags=0)
从一个字符串的开始位置起匹配正则表达式,返回match对象
re.findall(pattern,string,flags=0)
搜索字符串,以列表类型返回全部能匹配的子串
re.split(pattern,string,maxsplit=0,flags=0)
将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
maxsplit:最大分割数,剩余部分作为最后一个元素输出
maxsplit=0
匹配 一个,后面不匹配了
匹配的部分去掉,不匹配的输出
re.finditer(pattern,string,flags=0)
搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
re.sub(pattern,repl,string,count=0,flags=0)
在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
repl:替换匹配字符串的字符串
count:匹配的最大替换次数
使用repl替换string中每一个匹配的子串后返回替换后的字符串。
当repl是一个字符串时,可以使用id或g、g引用分组,但不能使用编号0。
当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。
count用于指定最多替换次数,不指定时全部替换。
re.subn(pattern, repl, string[, count])
返回 (sub(repl, string[, count]), 替换次数)。
regex = re.compile(pattern,flags=0)
将正则表达式的字符串形式编译正正则表达式对象
最小匹配操作符
*? 前一个字符2次或无限次扩展
+? 前一个字符1次或无限次扩展
?? 前一个字符2次或1次扩展
{m,n}? 扩展钱一个字符m至n次(含n)
正则表达式的常用操作符
. 表示任何单个字符
[] 字符集,对单个字符给出去值范围 [abc]表示a,b,c;[a-z]表示a到z单个字符
[^] 非字符集,对单个字符给出排除范围 [^abc]表示非a或b或c的单个字符
* 前一个字符0次或无限次扩展 abc^表示ab,abc,abcc,abccc等
+ 前一个字符1次或无限次扩展 abc+表示abc,abcc,abccc等
? 前一个字符0次或1次扩展 abc?表示ab,abc
| 左右表达式人一个 abc|def表示abc,def
{m} 扩展前一个字符m次 ab{2}c表示abbc
{m,n} 扩展前一个字符m至n次(含n) ab{1,2}c表示abc,abbc
^ 匹配字符串开头 ^abc表示abc且在一个字符串的开头
$ 匹配字符串结尾 abc$表示abc且在一个字符串的结尾
() 分组标记,内部只能使用 | 操作符 (abc)表示abc,(abc|def)表示abc,def
d 数字,等价于[0-9]
D 非数字,等价于[^0-9]
w 单词字符,等价于[A-Za-z0-9]
W 非单词字符,等价于[^A-Za-z0-9]
s 匹配任意的空白符(空格,换行,回车,换页,制表),效果[ f
]
S ......
x? 匹配0个或1个x (非贪婪匹配)
x* 匹配0个或任意多个x(.* 表示匹配0个或任意多个字符(换行符除外)贪婪匹配)
x+ 匹配至少一个x(贪婪匹配)
以上是关于Python 正则的主要内容,如果未能解决你的问题,请参考以下文章