Python标准库--re模块

re:正则表达式

__all__ = [
    "match", "fullmatch", "search", "sub", "subn", "split",
    "findall", "finditer", "compile", "purge", "template", "escape",
    "error", "A", "I", "L", "M", "S", "X", "U",
    "ASCII", "IGNORECASE", "LOCALE", "MULTILINE", "DOTALL", "VERBOSE",
    "UNICODE",
]

一些常量

I = IGNORECASE = sre_compile.SRE_FLAG_IGNORECASE # ignore case
# 使匹配对大小写不敏感
L = LOCALE = sre_compile.SRE_FLAG_LOCALE # assume current 8-bit locale
# 影响 "w, "W, "b, 和 "B,这取决于当前的本地化设置。 locales 是 C 语言库中的一项功能,是用来为需要考虑不同语言的编程提供帮助的。
# 举个例子,如果你正在处理法文文本,你想用 "w+ 来匹配文字,但 "w 只匹配字符类 [A-Za-z];它并不能匹配 "é" 或 "?"。 如果你的系统配置适当且本地化设置为法语,那么内部的 C 函数将告诉程序 "é" 也应该被认为是一个字母。
# 当在编译正则表达式时使用 LOCALE 标志会得到用这些 C 函数来处理 "w 後的编译对象;这会更慢,但也会象你希望的那样可以用 "w+ 来匹配法文文本。
M = MULTILINE = sre_compile.SRE_FLAG_MULTILINE # make anchors look for newline
# 使用 "^" 只匹配字符串的开始,而 $ 则只匹配字符串的结尾和直接在换行前(如果有的话)的字符串结尾。
# 当本标志指定後,"^" 匹配字符串的开始和字符串中每行的开始。同样的, $ 元字符匹配字符串结尾和字符串中每行的结尾(直接在每个换行之前)。
S = DOTALL = sre_compile.SRE_FLAG_DOTALL # make dot match newline
# 使 "." 特殊字符完全匹配任何字符,包括换行;没有这个标志, "." 匹配除了换行外的任何字符。
X = VERBOSE = sre_compile.SRE_FLAG_VERBOSE # ignore whitespace and comments
# 当该标志被指定时,在 RE 字符串中的空白符被忽略,除非该空白符在字符类中或在反斜杠之後;这可以让你更清晰地组织和缩进 RE。它也可以允许你将注释写入 RE,这些注释会被引擎忽略;注释用 "#"号 来标识,不过该符号不能在字符串或反斜杠之後。

函数

match() 从头匹配, 没有返回空
search() 字符串中查找,返回第一个
pattern = ‘this‘
text = ‘Does this text match this pattern?‘

match = re.match(pattern, text)
search = re.search(pattern, text)

s = search.start()
e = search.end()

print(match)
print(search.re.pattern)
print(search.string)
print(s)
print(e)
print(text[s:e])

"""
None
this
Does this text match this pattern?
5
9
this
"""

complie()

regex = re.compile(pattern)

print(regex.match(text))
print(regex.search(text))

"""
None
<_sre.SRE_Match object; span=(5, 9), match=‘this‘>
"""

findall() 与finditer()

迭代器生成Match实例, 通过group() start() end() 获取信息

text = ‘abbaaabbbbaaaabbbbbaaa‘
pattern = ‘ab‘

print(re.findall(pattern, text))

ab = re.finditer(pattern, text)

for match in ab:
    print(match)

for match in ab:
    print(str(match.start()) + ‘->‘ + str(match.end()), end=‘=‘)
    print(match.group())

"""
[‘ab‘, ‘ab‘, ‘ab‘]
<_sre.SRE_Match object; span=(0, 2), match=‘ab‘>
<_sre.SRE_Match object; span=(5, 7), match=‘ab‘>
<_sre.SRE_Match object; span=(13, 15), match=‘ab‘>

0->2=ab
5->7=ab
13->15=ab
"""

groups() 所有匹配字符串

group()  整体匹配字符串

group(0) group(1) 按组匹配的字符串

sub() 与 subn()

subn() 返回元祖,包含替换次数

bold = re.compile(r‘\*{2}(.*?)\*{2}‘)

text = "Make this **bold**.  This **too**."

print(text)

print(bold.sub(r‘<b>\1</b>‘, text, count=1))

print(bold.subn(r‘<b>\1</b>‘, text))

"""
Make this **bold**.  This **too**.
Make this <b>bold</b>.  This **too**.
(‘Make this <b>bold</b>.  This **too**.‘, 1)
"""
时间: 2024-09-30 11:21:49

Python标准库--re模块的相关文章

Python 标准库 ConfigParser 模块 的使用

Python 标准库 ConfigParser 模块 的使用 demo #!/usr/bin/env python # coding=utf-8 import ConfigParser import sys config = ConfigParser.ConfigParser() #写入 config.add_section("Inc_basic") config.set("Inc_basic","name","iPIN")

[python标准库]XML模块

1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词.短语或块成为可识别.可分类的信息. XML有以下几个特点. XML的设计宗旨是传输数据,而非显示数据. XML标签没有被预定义.您需要自行定义标签. XML被设计为具有自我描述性. XML是W3C的推荐标准. 其解析流程如下图: 2.常用解析XML的Python包 Python的标准库中,提供了6种

【python】Python标准库defaultdict模块

来源:http://www.ynpxrz.com/n1031711c2023.aspx Python标准库中collections对集合类型的数据结构进行了很多拓展操作,这些操作在我们使用集合的时候会带来很多的便利,多看看很有好处. defaultdict是其中一个方法,就是给字典value元素添加默认类型,之前看到过但是没注意怎么使用,今天特地瞅了瞅. 首先是各大文章介绍的第一个例子: 代码如下: import collections as coll def default_factory()

Python标准库--os模块

这个模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行.一个例子就是使用os.sep可以取代操作系统特定的路径分割符. 下面列出了一些在os模块中比较有用的部分.它们中的大多数都简单明了. os.name字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'. os.getcwd()函数得到当前工作

[python标准库]Logging模块

1.模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息: print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据:logging则可以由开发者决定将信息输出到什么地方,以及怎么输出: 模块提供logger,handler,filter,formatter. logger

Python——标准库 Sys模块

------------------------------------------------------------------------------------------------------ sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. ---------------------------------------------------

[python标准库]Time模块

在python中,通常有以下几种方式来表示时间: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量. 格式化时间:struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时) 字符串时间:xxx年xxx月xxxx日 import time s1 = time.localtime(23213123) # 将时间戳转化为结构化时间 s2 = time.mktime() # 将结构化时间转化为时间戳 s3 = time.str

Python标准库--functools模块

functools模块:管理函数的工具 partial对象:包装原函数,提供默认值 import functools # 原函数 def myfunc(a, b=2): """Docstring for myfunc().""" print(' called myfunc with:', a, b) return # 输出函数 def show_details(name, f, is_partial=False): print(name) pri

Python标准库--itertools模块

itertools模块:处理可迭代对象 chain()和islice().tee() chain:合并迭代器 islice:切割迭代器,start,end,step tee:复制迭代器,新迭代器共享输入迭代器, 新迭代器之间不影响 from itertools import * # for i in chain([1, 2, 3], ['a', 'b', 'c']): # print(i) # # for i in islice(count(), 0, 100, 10): # print(i)