Re-正则表达式的基本语法与应⽤Re 正则表达式提取页⾯关键信息
正则表达式
(regular expression, regex)--RE
正则表达式是⽤来简洁表达⼀组字符串的表达式
优势:简洁
⼀⾏胜千⾔!最主要应⽤在字符串匹配中
正则表达式是⼀种针对字符串表达“简洁”和“特征”思想的⼯具
正则表达式可以⽤来判断某字符串的特征归属
正则表达式基本语法:
正则表达式语法:
正则表达式提取中文字符--由字符和操作符构成
常⽤操作符:
.    表⽰任何单个字符
[]    字符集,对单个字符给出取值范围 [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]
\w    单词字符,等价于[A‐Za‐z0‐9_]
实例:
^[A‐Za‐z]+$        由26个字母组成的字符串
^[A‐Za‐z0‐9]+$    由26个字母和数字组成的字符串
^‐?\d+$      整数形式的字符串
^[0‐9]*[1‐9][0‐9]*$  正整数形式的字符串
[1‐9]\d{5}    中国境内,6位
[\u4e00‐\u9fa5]    匹配中⽂字符
\d{3}‐\d{8}|\d{4}‐\d{7}    国内电话号码,010‐68913536
IP地址字符串形式的正则表达式(IP地址分4段,每段0‐255)
精确写法  0‐99: [1‐9]?\d
100‐199: 1\d{2}
200‐249: 2[0‐4]\d
250‐255: 25[0‐5]
(([1‐9]?\d|1\d{2}|2[0‐4]\d|25[0‐5]).){3}([1‐9]?\d|1\d{2}|2[0‐4]\d|25[0‐5])
正则表达式的基本应⽤:
Re库是Python的标准库,主要⽤于字符串匹配调⽤⽅式:import re
Re库功能函数:
re.search()    在⼀个字符串中搜索匹配正则表达式的第⼀个位置,返回match对象
re.search(pattern, string, flags=0)
· pattern : 正则表达式的字符串或原⽣字符串表⽰
· string : 待匹配字符串
· flags : 正则表达式使⽤时的控制标记
常⽤标记说明
re.I re.IGNORECASE 忽略正则表达式的⼤⼩写,[A‐Z]能够匹配⼩写字符
re.M re.MULTILINE 正则表达式中的^操作符能够将给定字符串的每⾏当作匹配开始
re.S re.DOTALL 正则表达式中的.操作符能够匹配所有字符,默认匹配除换⾏外的所有字符
re.match()    从⼀个字符串的开始位置起匹配正则表达式,返回match对象
re.match(pattern, string, flags=0)
· pattern : 正则表达式的字符串或原⽣字符串表⽰
·
string : 待匹配字符串
· flags : 正则表达式使⽤时的控制标记
re.findall()  搜索字符串,以列表类型返回全部能匹配的⼦串
re.findall(pattern, string, flags=0)
· pattern : 正则表达式的字符串或原⽣字符串表⽰
· string : 待匹配字符串
· flags : 正则表达式使⽤时的控制标记
re.split()    将⼀个字符串按照正则表达式匹配结果进⾏分割,返回列表类型
re.split(pattern, string, maxsplit=0, flags=0)
· pattern : 正则表达式的字符串或原⽣字符串表⽰
· string : 待匹配字符串
·
maxsplit: 最⼤分割数,剩余部分作为最后⼀个元素输出
· flags : 正则表达式使⽤时的控制标记
re.finditer()  搜索字符串,返回⼀个匹配结果的迭代类型,每个迭代元素是match对象
re.finditer(pattern, string, flags=0)
· pattern : 正则表达式的字符串或原⽣字符串表⽰
· string : 待匹配字符串
· flags : 正则表达式使⽤时的控制标记
re.sub()    在⼀个字符串中替换所有匹配正则表达式的⼦串,返回替换后的字符串
re.sub(pattern, repl, string, count=0, flags=0)
· pattern : 正则表达式的字符串或原⽣字符串表⽰
· repl : 替换匹配字符串的字符串
·
string : 待匹配字符串
· count : 匹配的最⼤替换次数
· flags : 正则表达式使⽤时的控制标记
regex = repile(pattern, flags=0)  将正则表达式的字符串形式编译成正则表达式对象  · pattern : 正则表达式的字符串或原⽣字符串表⽰
· flags : 正则表达式使⽤时的控制标记
regex.search() 在⼀个字符串中搜索匹配正则表达式的第⼀个位置,返回match对象regex.match() 从⼀个字符串的开始位置起匹配正则表达式,返回match对象
regex.findall() 搜索字符串,以列表类型返回全部能匹配的⼦串
regex.split() 将⼀个字符串按照正则表达式匹配结果进⾏分割,返回列表类型
regex.finditer() 搜索字符串,返回⼀个匹配结果的迭代类型,每个迭代元素是match对象regex.sub() 在⼀个字符串中替换所有匹配正则表达式的⼦串,返回替换后的字符串
Match对象是⼀次匹配的结果,包含匹配的很多信息
属性说明
.string  待匹配的⽂本
.re    匹配时使⽤的patter对象(正则表达式)
.pos    正则表达式搜索⽂本的开始位置
.endpos  正则表达式搜索⽂本的结束位置
⽅法说明
.group(0)  获得匹配后的字符串
.start()  匹配字符串在原始字符串的开始位置
.end()    匹配字符串在原始字符串的结束位置
.span()    返回(.start(), .end())
Re库默认采⽤贪婪匹配,即输出匹配最长的⼦串

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。