正则表达式是定义搜刮形式的字符序列。一般这类形式被字符串搜刮算法用于字符串上的“查找”或“查找和替代”操纵,或许用于输入考证。
1. 正则表达式的语法
. 示意任何单个字符
[] 字符集,对单个字符给出取值局限
[^] 非字符集,对单个字符给出消除局限
*前一个字符0次或许无限次扩大
+前一个字符1次或无限次扩大
?前一个字符0次或1次扩大
|摆布表达式恣意一个
{m}扩大前一个字符m次
{m,n}扩大前一个字符m至n次
^婚配字符串开首
$婚配字符串末端
()分组标记,内部只能运用|操纵符
d数字,等价于[0-9]
w单词字符,等价于[A-Z,a-z,0-9]
2. python中re库的运用
Re库是python的规范库,重要用于字符串婚配,挪用要领:import re
2.1. 正则表达式字符串的范例
re库采纳raw string范例来示意正则表达式,示意为
r'text'
raw string是不包括对转义符的再次转义的字符串,总而言就是string会对字符转义,而raw string不会,由于在正则表达中会涌现转义标记,所以防止烦琐我们运用raw string
2.2. Re库重要功能函数
re.search()在一个字符串中搜刮正则表达式的第一个位置,返回match对象
re.match()从一个字符串的最先位置起婚配正则表达式,返回match对象
re.findall()搜刮字符串,以列表范例返回悉数能婚配的子串
re.split()将一个字符串根据正则表达式婚配效果举行支解,返回列表范例
re.finditer()搜刮字符串,返回一个婚配效果的迭代范例,每一个迭代元素是match对象
re.sub()在一个字符串中替代一切婚配正则表达式的子串,返回替代后的字符串
2.2.1. re.search(pattern, string, flags=0)
在一个字符串中搜刮正则表达式的第一个位置,返回match对象
pattern : 正则表达式的字符串或原生字符串示意
string : 待婚配字符串
flags : 正则表达式运用时的掌握标记
re.I re.IGNORECASE 疏忽正则表达式的大小写,[A‐Z]可以婚配小写字符
re.M re.MULTILINE 正则表达式中的^操纵符可以将给定字符串的每行看成婚配最先
re.S re.DOTALL 正则表达式中的.操纵符可以婚配一切字符,默许婚配除换行外的一切字符
举例说明:
import re match = re.search(r'[1-9]\d{5}', 'BIT 100081') if match: print(match.group(0)) 效果为100081
2.2.2. re.match(pattern, string, flags=0)
从一个字符串的最先位置起婚配正则表达式,返回match对象
参数同search函数
举例说明:
import re match = re.match(r'[1-9]\d{5}', 'BIT 100081') print(match.group(0)) 效果会报错,match为空,由于match函数是 从字符串最先位置最先婚配,由于从最先位置没有婚配到,所认为空
2.2.3. re.findall(pattern, string, flags=0)
搜刮字符串,以列表范例返回悉数能婚配的子串
参数同search
举例说明:
import re ls=re.findall(r'[1-9]\d{5}', 'BIT100081 TSU100084') print(ls) 效果为['100081', '100084']
2.2.4. re.split(pattern, string, maxsplit=0, flags=0)
将一个字符串根据正则表达式婚配效果举行支解返回列表范例
maxsplit : 最大支解数,盈余部份作为末了一个元素输出
举例说明 :
import re re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084') 效果['BIT', ' TSU', ' '] re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084', maxsplit=1) 效果['BIT', ' TSU100081']
2.2.5. re.finditer(pattern, string, maxsplit=0, flags=0)
搜刮字符串,返回一个婚配效果的迭代范例,每一个迭代元素是match对象
参数同search
举例说明 :
import re for m in re.finditer(r'[1-9]\d{5}', 'BIT100081 TSU100084'): if m: print(m.group(0)) 效果为 100081 100084
2.2.6. re.sub(pattern, repl, string, count=0, flags=0)
在一个字符串中替代一切婚配正则表达式的子串返回替代后的字符串
repl : 替代婚配字符串的字符串
count : 婚配的最大替代次数
举例说明:
import re re.sub(r'[1-9]\d{5}', ':zipcode', 'BIT100081 TSU100084') 效果为 'BIT:zipcode TSU:zipcode'
2.3 Re库的另一种等价用法(面向对象)
rst=re.search(r'[1-9]\d{5}', 'BIT 100081') 函数式的挪用,一次性操纵
pat=re.compile(r'[1-9]\d{5}') rst=pat.search('BIT 100081') 编译后屡次操纵
regex=re.complie(pattern,flags=0)
regex也有以上六种用法
2.4 Re库的Match对象
Match对象是是一次婚配的效果,包括婚配的许多信息
以下是Match对象的属性
.string 待婚配的文本
.re 婚配时运用的patter对象(正则表达式)
.pos 正则表达式搜刮文本的最先位置
.endpos 正则表达式搜刮文本的完毕位置
以下是Match对象的要领
.group(0) 取得婚配后的字符串
.start() 婚配字符串在原始字符串的最先位置
.end() 婚配字符串在原始字符串的完毕位置
.span() 返回(.start(), .end())
2.5 Re库的贪欲婚配和最小婚配
当正则表达式可以婚配是非差别的多项时,返回哪个呢?Re库默许采纳贪欲婚配,即返回婚配最长的子串
最小婚配
*? 前一个字符0次或无限次扩大,最小婚配
+? 前一个字符1次或无限次扩大,最小婚配
?? 前一个字符0次或1次扩大,最小婚配
{m,n}? 扩大前一个字符m至n次(含n),最小婚配
只需长度输出能够差别的,都可以经由过程在操纵符后增添?变成最小婚配
以上就是Python正则表达式和re库的相干内容引见(代码示例)的细致内容,更多请关注ki4网别的相干文章!