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


相关文章
|
4月前
|
Python
"揭秘!Python如何运用神秘的正则表达式,轻松穿梭于网页迷宫,一键抓取隐藏链接?"
【8月更文挑战第21天】Python凭借其强大的编程能力,在数据抓取和网页解析领域表现出高效与灵活。通过结合requests库进行网页请求及正则表达式进行复杂文本模式匹配,可轻松提取网页信息。本示例展示如何使用Python和正则表达式解析网页链接。首先确保已安装requests库,可通过`pip install requests`安装。接着,利用requests获取网页内容,并使用正则表达式提取所有`&lt;a&gt;`标签的`href`属性。
54 0
|
1月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
47 5
|
1月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
2月前
|
Python
【收藏备用】Python正则表达式的7个实用技巧
【收藏备用】Python正则表达式的7个实用技巧
32 1
|
2月前
|
数据安全/隐私保护 Python
Python实用正则表达式归纳
Python实用正则表达式归纳
20 3
|
2月前
|
Python
Python 正则表达式高级应用指南
正则表达式是文本模式匹配的强大工具,Python 的 `re` 模块支持其操作。本文介绍正则表达式的高级应用,包括复杂模式匹配(如邮箱、电话号码)、分组与提取、替换操作、多行匹配以及贪婪与非贪婪模式的区别。通过示例代码展示了如何灵活运用这些技巧解决实际问题。
31 7
|
2月前
|
JavaScript 前端开发 Scala
Python学习十:正则表达式
这篇文章是关于Python中正则表达式的使用,包括re模块的函数、特殊字符、匹配模式以及贪婪与非贪婪模式的详细介绍。
19 0
|
2月前
|
数据采集 开发者 Python
Python正则表达式之re.compile函数
`re.compile`是Python正则表达式处理中一个强大的工具,它通过预先编译正则表达式,不仅提升了执行效率,还增强了代码的组织性和可读性。掌握其使用,对于涉及文本分析、数据清洗、日志处理等领域的Python开发者来说,是非常必要的技能。正确并高效地应用这一功能,可以显著提升程序的性能和维护性。
139 0
|
3月前
|
索引 Python
30天拿下Python之正则表达式
30天拿下Python之正则表达式
20 0
|
3月前
|
数据采集 Python
Python正则表达式提取车牌号
Python正则表达式提取车牌号
49 0