re
库默认采用贪婪匹配,返回最长的字符串,
最小匹配操作符
操作符 | 说明 |
---|---|
*? | 前一个字符0次或无限次扩展,最小匹配 |
+? | 前一个字符1次或无限次扩展,最小匹配 |
?? | 前一个字符0次或1次扩展,最小匹配 |
{m,n}? | 扩展前一个字符m至n次(含n),最小匹配 |
match
对象
match
对象的常用属性.string
: 待匹配的文本.re
: 匹配时使用的pattern对象(正则表达式).pos
: 正则表达式搜索文本的开始位置.enpos
: 正则表达式搜索文本的结束位置
match
对象的常用方法group(0)
: 获取匹配后的字符串start()
: 匹配字符串在原始字符串的开始位置end()
: 匹配字符串在原始字符串的结束位置span()
: 返回(start(),end())
re
库的函数式用法(单次操作)
函数 | 描述 |
---|---|
re.search() | 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象 |
re.match() | 从一个字符串的开始位置起匹配正则表达式,返回match对象 |
re.findall() | 搜索字符串,以列表类型返回全部能匹配的子串 |
re.split() | 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型 |
re.finditer() | 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象 |
re.sub() | 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串 |
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 | 正则表达式中的.操作符可以匹配所有字符,默认匹配除换行外的所有字符 |
import re
match = re.search(r'[1-9]\d{5}', 'BIT 100081')
if match:
print(match.group(0))
re.match()
re.match(pattern, string, flags=0)
从一个字符串的开始位置起匹配正则表达式,返回match对象
- pattern:正则表达式的字符串或原生字符串表示
- string:待匹配的字符串
- flags: 正则表达式使用时的控制标记
import re
match = re.match(r'[1-9]\d{5}', '100081 BIT')
if match:
print(match.group(0))
re.findall()
re.findall(pattern, string, flags=0)
搜索字符串,以列表类型返回全部能匹配的子串
- pattern:正则表达式的字符串或原生字符串表示
- string:待匹配的字符串
- flags: 正则表达式使用时的控制标记
import re
ls = re.match(r'[1-9]\d{5}', 'ZHEN 471000 LUO 471001')
print(ls)
re.split()
re.split(pattern, string, maxsplit=0, flags=0)
将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
- pattern:正则表达式的字符串或原生字符串表示
- string:待匹配的字符串
- flags: 正则表达式使用时的控制标记
- maxsplit: 最大分割数,剩余部分作为最后一个元素输出
import re
ls = re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084')
print(ls)
ls = re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084', maxsplit=1)
print(ls)
re.finditer()
re.finditer(pattern, string, flags=0)
搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
- pattern:正则表达式的字符串或原生字符串表示
- string:待匹配的字符串
- flags: 正则表达式使用时的控制标记
import re
for match in re.finditer(r'[1-9]\d{5}', 'BIT100081 TSU100084'):
print(match.group(0))
re.sub()
re.sub(pattern, repl, string, count=0, flags=0)
在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
- pattern:正则表达式的字符串或原生字符串表示
- repl:用于替换待匹配的字符串的字符串
- string:待匹配的字符串
- count:匹配的最大替换次数
- flags: 正则表达式使用时的控制标记
import re
rep = re.sub(r'[1-9]\d{5}', ':zipcode', 'BIT100081 TSU100084')
print(rep)
re
库的面向对象用法(多次操作)
regex = re.compile(pattern, flags=0)
将正则表达式字符串形式编译成正则表达式对象
- pattern:正则表达式的字符串或原生字符串表示
- flags: 正则表达式使用时的控制标记
regex = re.compile(r'[1-9]\d{5}')
发表回复