正则表达式和re模块

正则表达式(Regular Expression,简称Regex或RegExp)是计算机科学中的一个重要概念,它通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串操作的一种逻辑公式,通过事先定义好的一些特定字符以及这些特定字符的组合,来组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑。

正则表达式的语法和规则因不同的编程语言和工具而异,但大多数都遵循一些基本的语法和规则。以下是一些常见的正则表达式语法和规则:

字符匹配.匹配除换行符以外的任意字符。

位置匹配^匹配输入字符串的开始位置,$匹配输入字符串的结束位置。

数量词*表示匹配前面的元素零次或多次,+表示匹配前面的元素一次或多次,?表示匹配前面的元素零次或一次。

字符集[]定义字符集,匹配括号内的任意一个字符。

预定义字符类 :如\d\w\s等,用于匹配特定类型的字符。

分组和引用 :使用圆括号()进行分组,可以将表达式组合为一个子表达式,并可以在后续操作中引用这个子表达式的匹配结果。

re模块

Python 中的 re 模块(Regular Expression 模块)是一个标准库,用于支持正则表达式。正则表达式是一种文本模式,用于匹配字符串中字符组合的模式。它可以帮助你搜索、编辑或操作文本和数据,以实现复杂的文本处理任务。

引入re模块

import re

re 模块提供了一系列函数和方法来处理正则表达式。以下是一些常用的:

match方法

尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 none。

# 导入re模块
import re

# 设置正则表达式匹配规则
pattern = re.compile(r'\d+')

# 匹配的目标文本,没有匹配到,则终止匹配,由于字母o不是数字,因此,无匹配数据
m1 = pattern.match('one123two456three789')
print(m1)

# 参数1:匹配的起始位置,下表数包含
# 参数2:匹配的结束位置,下标数不包含
m1 = pattern.match('one123two456three789', 3, 6)
print(m1.group())  # 通过group查看匹配的数据

search方法

扫描整个字符串并返回第一个成功的匹配。

import re

pattern = re.compile(r'\d+')

# 它是一次匹配,只要找到了一个匹配的结果就返回,不是查找所有匹配的结果
m1 = pattern.search('one123two456three789')
print(m1.group())

findall方法

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

import re

pattern = re.compile(r'[a-z]+')
# findall 方法用于搜索整个字符串,获得所有匹配的结果
result = pattern.findall('hello 123 world 456')
print(result)

spilt方法

通过正则表达式将字符串分割为一个列表。

import re

str = 'a,b,c'
print(str.split(','))

str1 = 'a,b;; c,d'
pattern = re.compile('[\s\,\;]+')
print(pattern.split(str1))

sub方法

替换字符串中所有匹配正则表达式的子串。

import re

string = '<h1 class="test">helloWorld</h1>'
pattern = re.compile(r'\d')

# 参数1:替换后的值   参数2:原值
print(pattern.sub('2',string))

# 参数3:替换几个
print(pattern.sub('2',string,2))

# 分组
string = '<h1 class="test">helloWorld</h1>'

# P<classname>为组声明名字,可以通过名字调用该组
pattern = re.compile(r'<(.\d)\sclass="(?P<classname>.*?)">.*?</(.1)>')
print(pattern.search(string).group(1))
print(pattern.search(string).group(2))
print(pattern.search(string).group(3))

compile

编译一个正则表达式模式,返回一个正则表达式的匹配对象,通过它可以使用匹配对象的方法。

相关推荐
一雨方知深秋3 小时前
新建flask项目,配置入口文件,启动项目
javascript·python·正则表达式·flask·json·html5
I'm happy7 小时前
pyhton语法 正则表达式
python·正则表达式
LabVIEW开发9 小时前
通过 LabVIEW 正则表达式读取数值(整数或小数)
正则表达式·labview·数字·开发技巧
神的孩子都在歌唱21 小时前
正则表达式中的特殊字符
开发语言·正则表达式·c#
Pafey1 天前
在 Visual Studio (VS2015)中搜索时使用正则表达式
windows·正则表达式·visual studio
Savannah.security2 天前
Linux基础---13三剑客及正则表达式
linux·运维·正则表达式
小米渣aa3 天前
正则表达式
正则表达式
初学c++4 天前
正则表达式基础
正则表达式
Midsummer啦啦啦5 天前
网址匹配正则表达式(python实现)
开发语言·python·正则表达式