本文链接: https://blog.csdn.net/xietansheng/article/details/115557843

Python3 学习笔记(目录)

Python官网 正则表达式:re — Regular expression operations

1. 正则表达式模块: re

正则表达式简单使用示例:

import repattern = re.compile("[0-9]+")          # 编译正则表达式, 返回 re.Patternprint(pattern.match("12cd"))            # 匹配字符串(匹配开头), 匹配, 返回 re.Match
print(pattern.match("ab34"))            # 匹配字符串(匹配开头), 不匹配, 返回 None
print(pattern.fullmatch("1234"))        # 匹配整个字符串
print(pattern.findall("ab12cd34"))      # 搜索整个字符串, 返回所有匹配的子串列表: ["12", "34"]match = pattern.search("ab12cd")        # 从整个字符串中搜索("[0-9]+")第一个匹配的结果,
if match:                               # 搜索到匹配结果, 返回 re.Match, 否则为 None,print(match.group())                # 获取搜索到的结果, 结果为 "12"print(re.match("[0-9]+", "12cd"))       # 也可以调用 re 模块的直接方法进行匹配,
print(re.fullmatch("[0-9]+", "1234"))   # 内部也是先编译再匹配, 内部编译好的正则表达式对象会缓存,
print(re.findall("[0-9]+", "ab12cd34")) # 下次再使用该正则表达式(pattern与flags相同)时,
print(re.search("[0-9]+", "ab12cd"))    # 直接从缓存中获取正则表达式对象, re.purge() 清除缓存。

re模块中的函数与常量(Python官网 re模块内容):

# 将正则表达式编译为正则表达式对象 re.Pattern
#
# 参数:
#     pattern: 正则表达式(字符串类型, 原始样式字符串)
#     flags: 标志常量(例如只匹配ASCII码, 忽略大小写等), re.RegexFlag 类中的常量
# 返回:
#     正则表达式对象 re.Pattern
#
# 得到编译好的正则表达式对象后, 可以用它的 match(), search() 等方法匹配字符串。
re.compile(pattern, flags=0)# 搜索整个字符串, 找到匹配样式的第一个位置
#
# 参数:
#     pattern: 正则表达式(字符串类型)
#     string: 搜索的字符串
#     flags: 标志常量
# 返回:
#     搜索成功, 则返回 re.Match 对象, 否则返回 None。
#     搜索成功后调用 match.group() 方法可以获取搜索到的内容。
re.search(pattern, string, flags=0)# 匹配字符串的开头, 函数内部将会把 pattern字符串 编译为 re.Pattern对象, 再进行匹配。
#
# 参数:
#     pattern: 正则表达式(字符串类型)
#     string: 需要匹配的字符串
#     flags: 标志常量
# 返回:
#     匹配成功, 则返回 re.Match 对象, 否则返回 None。
#     匹配成功后调用 match.group() 方法可以获取匹配的内容。
re.match(pattern, string, flags=0)# 匹配整个字符串
re.fullmatch(pattern, string, flags=0)# 用 pattern 分开 string, 返回一个由分开后子字符串组成的 列表
re.split(pattern, string, maxsplit=0, flags=0)# 查找整个字符串, 返回一个不重复的与 pattern 匹配的子字符串列表
re.findall(pattern, string, flags=0)# 查找整个字符串, 返回一个迭代器, 迭代元素为 re.Match
re.finditer(pattern, string, flags=0)# string 中匹配 pattern 的子字符串用 repl 替换, count 表示最多替换次数
# count=0表示全部替换, 返回被替换后的字符串。
re.sub(pattern, repl, string, count=0, flags=0)# 与 re.sub(...) 相同, 返回的是一个元祖 (替换后的字符串, 替换次数)
re.subn(pattern, repl, string, count=0, flags=0)# 转义 pattern 中的特殊字符。如果想匹配任何可能包含正则表达式元字符的
# 文本字符串, 可以用该方法先转义正则表达式。
# 例如: re.escape(".+abc") 结果为 "\.\+abc"
# 匹配字符串是否以 ".+abc" 开头: re.match(re.escape(".+abc"), ".+abc123")
re.escape(pattern)# 清除正则表达式缓存
re.purge()

re.match() 与 re.search() 的区别:前者只匹配字符串开头,后者搜索整个字符串。

标记常量 flags 是 re.RegexFlag 类中的示例,该类继承自 enum.IntFlag,并有多个别名引用。flags 的部分常量:

# 让 \w, \W, \b, \B, \d, \D, \s, \S 只匹配ASCII, 而不是 Unicode
re.A,   re.ASCII,       re.RegexFlag.A,     re.RegexFlag.ASCII# 匹配时忽略大小写
re.I,   re.IGNORECASE,  re.RegexFlag.I,     re.RegexFlag.IGNORECASE# 由本地语言区域决定 \w, \W, \b, \B 和 大小写敏感匹配
re.L,   re.LOCALE,      re.RegexFlag.L,     re.RegexFlag.LOCALE# 样式字符 '^' 和 '$' 除了匹配字符串的开始和结束外, 还匹配每一行的开始和结束
re.M,   re.MULTILINE,   re.RegexFlag.M,     re.RegexFlag.MULTILINE# 使特殊字符 '.' 匹配换行符, 没有该标记, '.' 只匹配除了换行符以外的其他任意字符
re.S,   re.DOTALL,      re.RegexFlag.S,     re.RegexFlag.DOTALL# 编译时忽略空白和注释, 设置了该标记后可以在正则表达式的原始样式字符串中添加注释
re.X,   re.VERBOSE,     re.RegexFlag.X,     re.RegexFlag.VERBOSE

标记常量 flags 可以同时设置多个,例如: flags=re.A|re.I

2. 正则表达式对象: re.Pattern

正则表达式对象re.Pattern中的属性和方法(Python官网 Regular Expression Objects):

Pattern.search(string[, pos[, endpos]])         # 参考 re.search()Pattern.match(string[, pos[, endpos]])          # 参考 re.match()
Pattern.fullmatch(string[, pos[, endpos]])      # 参考 re.fullmatch()Pattern.split(string, maxsplit=0)               # 参考 re.split()Pattern.findall(string[, pos[, endpos]])        # 参考 re.findall()
Pattern.finditer(string[, pos[, endpos]])       # 参考 re.finditer()Pattern.sub(repl, string, count=0)              # 参考 re.sub()
Pattern.subn(repl, string, count=0)             # 参考 re.subn()Pattern.pattern                                 # 编译对象的原始样式字符串
Pattern.flags                                   # 正则表达式对象的标志常量
Pattern.groups                                  # 捕获组合的数量
Pattern.groupindex                              # 映射由 (?P<id>) 定义的命名符号组合和数字组合的字典,# 如果没有符号组, 则该字典为空字典 {}。

3. 匹配对象: re.Match

匹配对象re.Match中的部分属性和方法(Python官网 Match Objects):

Match.group([group1, ...])  # 返回一个(str)或多个(tuple)匹配的子组, group 默认为 0 表示匹配的整个子串
Match.groups(default=None)  # 返回一个元祖, 包含了所有匹配的子组Match.start([group])    # 返回 group 匹配到的子字符串的开始位置, group 默认为 0 表示匹配的整个子串
Match.end([group])      # 返回 group 匹配到的子字符串的结束位置, group 默认为 0 表示匹配的整个子串Match.span([group])     # 返回一个元祖 (m.start(group), m.end(group))Match.re                # 产生该匹配对象 的 正则表达式对象
Match.string            # 产生该匹配对象 的 中的原待匹配字符串

代码示例:

>>> import re
>>> m = re.search("(\\w+)_(\\w+)", "xx aa_bb yy")
>>>
>>> m.group()           # 匹配的整个子串
'aa_bb'
>>> m.group(0)          # 匹配的整个子串
'aa_bb'
>>> m.group(1)          # 第1个匹配组(带圆括号的组)匹配的子串
'aa'
>>> m.group(2)          # 第2个匹配组 匹配的子串
'bb'
>>> m.group(1, 2)       # 第1、2个匹配组 匹配的子串组成的元祖
('aa', 'bb')
>>> m.groups()          # 所有匹配组 匹配的子串组成的元祖
('aa', 'bb')
>>>
>>> m.start()           # 匹配的整个子串 在 原字符串中的 开始 位置
3
>>> m.start(0)          # 匹配的整个子串 在原字符串中的 开始 位置
3
>>> m.start(2)          # 第2个匹配组 匹配的子串 在原字符串中的 开始 位置
6
>>> m.end(1)            # 第1个匹配组 匹配的子串 在原字符串中的 结束 位置(下一个位置的索引)
5
>>> m.span()            # 匹配的整个子串 在原字符串中的 开始 和 结束 位置
(3, 8)
>>> m.span(0)           # 匹配的整个子串 在原字符串中的 开始 和 结束 位置
(3, 8)
>>> m.span(1)           # 第1个匹配组 匹配的子串 在原字符串中的 开始 和 结束 位置
(3, 5)
>>>
>>> m.re                        # 产生该匹配对象 的 正则表达式对象
re.compile('(\\w+)_(\\w+)')
>>> m.string                    # 产生该匹配对象 的 中的原待匹配字符串
'xx aa_bb yy'

Python3: 正则表达式 - re 模块相关推荐

  1. python3中argparse模块详解

    文章目录 python3中argparse模块详解 一. 命令行参数分为位置参数和选项参数: 二. 使用步骤: 三. add_argument()方法参数: 1. name or flags: 2. ...

  2. pythonurllib模块-Python3中核心模块urllib的用法大全

    Python的urllib模块提供了一个高级的Web通信库,支持基本的协议,如HTTP.FTP和Gopher,同时也支持对本地文件的访问.在Python3中,urllib.urlparse.urlli ...

  3. python 正则表达式re 模块的使用

    python 正则表达式re 模块的使用 文章目录: 一.re模块介绍 1.re模块说明 2.官方文档给出的文档 3.别人总结的成表格中的内容 二.re模块使用介绍 1.常用函数源码 1.常用的函数介 ...

  4. python爬取音乐神器_Python爬虫提取神器,正则表达式(re模块),全程干货!

    python正则表达式(re模块) 什么是正则表达式 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a到z之间的字母)和特殊字符(称为"元字符&quo ...

  5. Python3之paramiko模块

    Python3之paramiko模块 转载☞:https://www.cnblogs.com/meng-wei-zhi/p/8258674.html 参考☞:https://www.cnblogs.c ...

  6. python3 正则表达式点星问号(.*?)能不能匹配换行符?不能的话应该怎么写

    python3的re模块使用过程中,正则的书写遇到了一些问题,就是使用.*?能不能匹配到换行符的问题. 答案是不能. 如果在匹配过程中遇到了也没关系,加上这个语句就好: \s+ 转载于:https:/ ...

  7. 【Python3】Python模块与包的导入

    [Python3]Python模块与包的导入 一.模块导入 1. 定义 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语 ...

  8. Python3之configparser模块

    1. 简介 configparser用于配置文件解析,可以解析特定格式的配置文件,多数此类配置文件名格式为XXX.ini,例如mysql的配置文件.在python3.X中模块名为configparse ...

  9. python findall函数_Ramp;Python Data Science系列:数据处理(11)Python正则表达式re模块(三)...

    前言 使用正则表达式进行匹配,可以直接调用模块级函数,如match().search().findall()等,函数第一个参数是匹配的正则表达式,第二个参数则为要匹配的字符串.也可以使用re.comp ...

最新文章

  1. Exchange Server2013 系列十:证书的配置
  2. pybind传输list
  3. 聊聊Function的bind()
  4. 什么时候会触发这个策略呢?
  5. 利用EVC快速开发WINCE5.0的流驱动(转载)
  6. 在Windows 7上安装ACE 6.1.0
  7. 整理python小爬虫
  8. asp.net mvc bundle中数组超出索引
  9. usb启动计算机boss设置方法,技嘉主板bios设置usb启动(图文教程)
  10. linux 中cp是什么意思,linux系统cp是什么
  11. .bash_profile和.bashrc以及profile的什么区别
  12. python怎么获取向量中非零元素的行号
  13. 跑步用挂脖耳机好还是无线耳机、公认最好的跑步耳机推荐
  14. Excel 函数大全之查找和引用函数 01 ADDRESS、AREAS、CHOOSE 、CHOOSECOLS、CHOOSEROWS、COLUMN 、COLUMNS教程含使用方法
  15. word2013 无法撤销解决方法-有效
  16. 为什么只看重结果_不要只看重结果 过程也是美丽的
  17. 2023-01-18 工作记录--React-手写日历+JS-计算某一日期对应一周的日期
  18. 【漫漫长征路】hihocoder #1082 然而沼跃鱼早就看穿了一切
  19. LeetCode4寻找两个有序数组的中位数(二分查找+分治)
  20. 快车道不快的现象与人类误判心理学

热门文章

  1. 关于大学生学习与毕业的一些思考
  2. 文献 | 坏天气会让我们更怀旧?
  3. 急速浏览器怎么直接打开隐身模式
  4. tp3 php钩子函数,thinkphp模型事件(钩子函数:模型中在增删改等操作前后自动执行的事件)...
  5. InputStream类、OutputStream类、BufferedInputStream类与BufferedOutputStream类--Java基础084
  6. 22 个常用的 Python 工具包
  7. 磁盘格式MBR和GPT
  8. 机器人动力学与控制学习笔记(六)————机器人PID控制
  9. Data Augmentation techniques in time series domain: A survey and taxonomy
  10. viewport与移动端布局