re库学习笔记

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}')

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据