Python基础知识进阶之正则表达式(一)

简介: Python基础知识进阶之正则表达式

一.match

      re.match 是从字符串的起始位置匹配一个模式,


      匹配成功 re.match 方法返回一个匹配的对象,否则返回 None。


re.match(pattern, string, flags=0)

pattern: 匹配的正则表达式。


string:   要匹配的字符串。


flags:    标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。


      正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位或 ( | ) 来指定,例如:re.L | re.M 。

修饰符

描述

re.I

使匹配对大小写不敏感

re.L

做本地化识别(locale-aware)匹配

re.M

多行匹配,影响 ^ 和 $

re.S

使 . 匹配包括换行在内的所有字符

re.U

根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.

re.X

为了增加可读性,忽略空格和' # '后面的注释

import re
print(re.match('www', 'www.baidu.com'))  
# 在起始位置匹配        返回 <re.Match object; span=(0, 3), match='www'>
print(re.match('com', 'www.baidu.com')) 
# 不在起始位置匹配      返回 None
print(re.match('www', 'www.baidu.com').span())
# 匹配成功字符起始位置  返回 (0, 3)
print(re.match('www', 'www.baidu.com').group())
# 获取匹配成功字符串    返回 www

二.search

      re.search 是扫描整个字符串并返回第一个成功的匹配,


      匹配成功re.search方法返回一个匹配的对象,否则返回None。


re.search(pattern, string, flags=0)

pattern: 匹配的正则表达式。


string:   要匹配的字符串。


flags:    标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

import re
print(re.search('www', 'www.baidu.com'))  
# 在起始位置匹配        返回 <re.Match object; span=(0, 3), match='www'>
print(re.search('com', 'www.baidu.com'))  
# 不在起始位置匹配      返回 <re.Match object; span=(0, 3), match='www'>
print(re.search('www', 'www.baidu.com').span())  
# 匹配成功字符起始位置  返回 (0, 3)
print(re.search('com', 'www.baidu.com').group())
# 获取匹配成功字符串    返回 com

注意:


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


三.sub

      re.sub用于替换字符串中的匹配项,结果返回替换后的字符串。

re.sub(pattern, repl, string, count=0, flags=0)

pattern :   正则中的模式字符串。


repl :        替换的字符串,也可为一个函数。


string :     要被查找替换的原始字符串。


count :     模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。


flags:    标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

import re
print(re.sub('w', 'www', 'w.baidu.com'))
# 匹配成功替换字符串(默认替换1次) 返回 www.baidu.com
print(re.sub('w', 'WWW', 'w.baidu.www', 2))
# 匹配成功替换指定次数字符串       返回 WWW.baidu.WWWww

四.subn

      re.subn和sub相同,都是用于替换字符串中的匹配项,只不过subn的结果返回一个元组包含替换后的字符串和替换次数。


re.subn(pattern, repl, string, count=0, flags=0)

pattern :   正则中的模式字符串。


repl :        替换的字符串,也可为一个函数。


string :     要被查找替换的原始字符串。


count :     模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。


flags:    标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

import re
print(re.subn('w', 'www', 'w.baidu.com'))
# 匹配成功替换字符串(默认替换1次)    返回 (www.baidu.com,1)
print(re.subn('w', 'WWW', 'w.baidu.www', 2))
# 匹配成功替换指定次数字符串          返回 (WWW.baidu.WWWww,2)

五.compile

      compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,


      供 match() 和 search() 这两个函数使用。


re.compile(pattern[, flags])

pattern : 一个字符串形式的正则表达式


flags : 可选,表示匹配模式,比如忽略大小写,多行模式等。

import re
x = re.compile('www')
print(re.match(x,'www.baidu.com'))
# <re.Match object; span=(0, 3), match='www'>
y = re.compile('com')
print(re.search(y,'www.baidu.com'))
# <re.Match object; span=(10, 13), match='com'>


相关文章
|
8天前
|
JSON JavaScript API
Python进阶---FastAPI框架
Python进阶---FastAPI框架
32 2
|
8天前
|
数据安全/隐私保护 Python
Python进阶---正则表达式
Python进阶---正则表达式
11 2
|
8天前
|
调度 Python
Python进阶---多任务编程
Python进阶---多任务编程
14 3
|
8天前
|
网络协议 数据格式 Python
Python进阶---HTTP协议和Web服务器
Python进阶---HTTP协议和Web服务器
19 4
|
8天前
|
网络协议 Linux Python
Python进阶---网络编程
Python进阶---网络编程
24 2
|
8天前
|
Python
Python进阶---闭包和装饰器
Python进阶---闭包和装饰器
21 2
|
8天前
|
存储 对象存储 Python
Python进阶---面向对象 补充
Python进阶---面向对象 补充
19 1
|
8天前
|
Python
Python进阶---面向对象 继承
Python进阶---面向对象 继承
9 1
|
8天前
|
存储 对象存储 Python
Python进阶 -- 面向对象 基础
Python进阶 -- 面向对象 基础
13 2
|
自然语言处理 算法 Python
Python——jieba优秀的中文分词库(基础知识+实例)下
Python——jieba优秀的中文分词库(基础知识+实例)下
169 0
Python——jieba优秀的中文分词库(基础知识+实例)下