• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LOFLY
终其一生,编织快乐
博客园    首页    新随笔    联系   管理    订阅  订阅

正则表达式

思维导图

正则表达式re模块 思维导图

正则表达式

image

image

image

数量词的贪婪模式与非贪婪模式

   正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。

反斜杠的困扰

  与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r"\\"表示。同样,匹配一个数字的"\\d"可以写成r"\d"。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。

匹配模式

  正则表达式提供了一些可用的匹配模式,比如忽略大小写、多行匹配等,这部分内容将在Pattern类的工厂方法re.compile(pattern[, flags])中一起介绍。

image

image

image

image

image

image

image

image

image

输出:
image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

Python的re模块
re模块常量:

image

re模块函数:
(一)查找一个匹配项:
1.search:查找任意位置的匹配项
re.search(pattern,target):pattern是模式字符串,target作为需要匹配的字符串。 返回值为target中与pattern相匹配的子串。
2.match:必须从字符串开头匹配
与1.类似
3.fullmatch:整个字符串与正则完全匹配
与1.类似

image

输出:
image

注:查找到一个匹配项,返回的是一个re.Match对象

(二)查找多个匹配项:
1.findall:从字符串任意位置查找,返回一个列表

image

输出:
image

  1. finditer:从字符串任意位置查找,返回一个迭代器
    迭代器是需要使用时一点一点生成出来的,内存使用更优。

(三)字符串分割函数

re.split(pattern, target, maxsplit=0, flags=0) 函数:用 pattern 分开 string , maxsplit表示最多进行分割次数, flags表示模式,flags取值即re模块中的9个常量。

image

输出:
image

image

在不需要正则支持且数据量和数次不多 的情况下使用str.split函数更合适,反之则使用re.split函数。

(四)字符串替换
替换主要有sub函数 与 subn函数,他们功能类似!
re.sub(pattern, repl, targetString, count=0, flags=0) 函数参数讲解:repl替换掉string中被pattern匹配的字符, count表示最大替换次数,flags表示正则表达式的常量。

repl替换内容既可以是字符串,也可以是一个函数
image

image

输出:
image

将所有数字全匹配成字母M

(五)编译正则对象
调用re模块的compile对象,返回一个Pattern对象,
调用Pattern对象的search方法,匹配第一个符合正则表达式的字符串。

image
image
image

posted @ 2023-03-30 10:48  编织快乐  阅读(17)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3