Python笔记:Python中的正则表达式常用函数整理

匹配函数

  • re.match: 从字符串的起始位置匹配一个模式,如果不是则返回 None
  • re.search: 扫描整个字符串并返回第一个成功的匹配
  • re.findall: 在字符串中找到正则表达式所匹配的所有子串, 并返回一个列表, 如果没有找到匹配,返回空列表 []
  • re.finditer: 与 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

其他说明:

  • re.MatchObject: match和search一旦匹配成功就返回此对象,此对象有以下几种常用函数

    • group() 返回被RE匹配的字符串
    • start() 返回匹配开始的位置
    • end() 返回匹配结束的位置
    • span() 返回一个元组包含匹配(开始,结束)的位置
  • re.matchre.search的区别

    • re.match 只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None
    • re.search 匹配整个字符串,直到找到一个匹配

match search compile

import re

# 测试 match 函数 匹配的是开头的
print(re.match('\d{4}', "wq2345sfdssw2")) # None
# 测试 search 函数 匹配
print(re.search('\d{4}', "wq2345sfdssw2")) # <_sre.SRE_Match object; span=(2, 6), match='2345'>
# 测试compile函数 封装一个正则
pat = re.compile("^[1][3456789][0-9]{9}$")
# 匹配手机号
print(pat.match('15345689545')) # <_sre.SRE_Match object; span=(0, 11), match='15345689545'>

match object 对象

matchsearch 一旦匹配成功,就是一个match object对象,而该对象有一下几个方法:

  • group() 返回被RE匹配的字符串
  • start() 返回匹配开始的位置
  • end() 返回匹配结束的位置
  • span() 返回一个元组包含匹配(开始, 结束)的位置
import re

ob = re.match('\d+', '123sdsf')
print(ob) # <_sre.SRE_Match object; span=(0, 3), match='123'>
print(ob.group()) # 123
print(ob.span()) # (0, 3)
print(ob.start()) # 0
print(ob.end()) # 3

ob = re.search('\d+', '123sdsf')
print(ob.group()) # 123

查找函数 findall finditer

import re

str = "<ul><li>aaa</li><li>bbb</li><li>ccc</li></ul>"
data = re.findall("<li>(.*?)</li>", str)

for v in data:
    print(v)

# 分别会输出 
# aaa 
# bbb 
# ccc

分割函数

  • 按照能够匹配的子串将string分割后返回列表
  • 可以使用re.split来分割字符串,如:re.split(r'\s+', text); 将字符串按空格分割成一个单词列表
  • 格式:re.split(pattern, string[,maxsplit])
import re

s = '2232322,2342;222:23'

dd = re.split("[^0-9]", s)
yy = re.split("[^0-9]", s, 2)

for v in dd:
    print(v)

# 分别输出 
# 2232322
# 2342
# 222
# 23

print(">>>>")

for i in yy:
    print(i)

# 分别输出
# 2232322
# 2342
# 222:23

替换函数

  • sub

    • 使用re替换string中每一个匹配的子串后返回替换后的字符串
    • 格式:re.sub(pattern, repl, string, count)
  • subn

    • 返回替换次数
    • 格式:subn(pattern, repl, string, count=0, flags=0)
import re

# 将非零数字全部替换为空格
s = "12,22;2323:"
b = re.sub("[^0-9]", "", s)
c = re.subn("[^0-9]", "", s)
print(b) # 12222323
print(c) # ('12222323', 3) # 还返回了本次替换了几个值, 返回的是元组
发布了370 篇原创文章 · 获赞 169 · 访问量 66万+

猜你喜欢

转载自blog.csdn.net/Tyro_java/article/details/102877672