Python正则

简介: 【10月更文挑战第19天】

【10月更文挑战第19天】

^可以进行开头字符的设置

import re
#以t开头
print(re.findall('^t\w+','testabctest'))
#['testabctest']
'''
^t----设置以t开头
\w匹配字母数字下划线
+至少匹配一次
'''

import re
#以t开头
print(re.findall('^t\w+','Testabctest'))
#[]

如果字符串中的开头不是T的话,返回的就是个空列表了

$ 设置匹配的结尾字符

import re
#以t结尾
print(re.findall('^t\w+t$','testabctest'))
#['testabctest']

import re
#以T结尾
print(re.findall('^t\w+T$','testabctest'))
#[]

此时我们设置了开头和结尾,那么我们在+后面添加一个问号看看

import re
#以T结尾
print(re.findall('^t\w+?t$','testabctest'))
#['testabctest']

#我们设置好了第一个和最后一个
#结尾字符指的就是字符串的最后面一个字符
#我们必须将中间的匹配完我们才能拿到

#我们加上?的话就没啥用,就不存在贪婪和非贪婪的说法了

我们已经将字符串的开头和结尾设置好了,不存在什么贪婪和非贪婪的说法了,中间的必须进行匹配的操作

^[ ]:匹配 [ ] 中列举的字符开头

[^ ]:匹配的不是 [ ]中列举的内容,就是取反操作,就是里面的我们不匹配,不是里面的我们都匹配

^[]的使用方法:

import re
#匹配[]内列举的内容
print(re.findall('^[Tt]\w+','Testabctest'))
#['Testabctest']

[^]的使用方法:不取括号内的元素吗,其他的都会进行匹配操作

import re
#不匹配[]内列举的内容
print(re.findall('[^Tt]','Testabctest'))
#['e', 's', 'a', 'b', 'c', 'e', 's']

image.png

进行括号的匹配

r=re.match( '<.+>(.*)<.+>','<h1>python<\h1>')
print(r.group())
#<h1>python<\h1>
#获取到标签中间的句子
print(r.groups())
#('python',)
#以元组的形式进行存储
#尖括号对尖括号,那么这个圆括号就和python进行匹配上了

使用.*的话会将整个字符串进行匹配操作的

如果findall中使用了(),返回的内容只有()中匹配的数据的,以列表形式返回的


print(re.findall('<.+>(.*)<.+>','<h1>python<\h1>'))
#['python']

image.png

compile---将正则表达式对象化

compile(正则表达式)---将正则表达式转换为对象,用于多次调用的正则表达式

c=re.compile('<.+>(.*)<.+>')
print(c)
 #re.compile('<.+>(.*)<.+>')
#通过对象进行方法的调用操作,那么就是省略掉了前面的正则表达式,写后面的字符串就行了
print(c.match('<h1>python<\h1>').groups())
#('python',)
print(c.search('<h1>python<\h1>').groups())
#('python',)
print(c.findall('<h1>python<\h1>'))
#['python']

#我们后面都没写正则表达式了,因为我们在前面就将正则表达式转换为对象了

#通过对象进行方法的调用,会将对象信息给到方法的

我们后面都没写正则表达式了,因为我们在前面就将正则表达式转换为对象了

我们后面直接用对象进行方法的调用就行了

使用compile将正则表达式转换为对象,使后面的代码更加简洁了

sub()---进行大量数据中数据的替换方法

replace--进行字符串中指定元素的替换操作

s='hello 111word 222'
#现在我们想将连续的三个数字替换为666
s=s.replace('111','666')
print(s)
#hello 666word 222
s=s.replace('222','666')
print(s)
#hello 666word 666

#如果我们还存在其他的数字的话我们还需要进行替换的操作
#这样就会很麻烦的

对于数据小的我们还可以使用字符串中的replace进行替换操作

但是如果是数据比较大的我们就不是很方便进行数据的替换操作了

sub(正则表达式,新数据,修改的字符串,替换次数)

通过正则表达式对字符串进行批量的替换

如果我们后面设置了数字的话,那么就根据我们设置的数字进行替换的次数

s1='hello 111word 222'
#我们需要将连续的三个字符进行替换了
s2=re.sub('\d{3}','666',s1)
print(s2)
#hello 666word 666
#第一个参数就是替换的字符串的特点
#第二个参数是替换的新数据
#第三个是需要进行替换的字符串

将字符串中满足特点的条件的字符进行替换操作

split--通过正则进行拆分的操作

split(正则表达式,要拆分的字符串,拆分的次数)

s='huahua1xiaoming2lisi3lala'
#拆分出名字
l=re.split('\d',s)
print(l)
#['huahua', 'xiaoming', 'lisi', 'lala']

将字符串中满足条件的数字进行拆分了,以数字进行拆分符号进行拆分

第一个参数是拆分符号的特点,第二个参数是要拆分的字符串

上面是第一种拆分的方法,我们还有第二种方法进行拆分

l=re.split('[123]',s)
print(l)
#['huahua', 'xiaoming', 'lisi', 'lala']

直接将拆分的数字列举在括号内,然后进行拆分的操作

还可以这么写:

l=re.split('[1-3]',s)
print(l)
#['huahua', 'xiaoming', 'lisi', 'lala']

image.png

print(re.match('ve\b','ve2test'))
#None

在Python中,re.match 函数是用来检查字符串是否从开始就符合给定的正则表达式模式。这里的正则表达式模式是 've\b'

让我们分解一下这个正则表达式:

  • ve:这部分表示匹配文本中的 "ve" 这两个字符。

  • \b:这是一个正则表达式的边界匹配符,它匹配一个单词的边界,即它前后不能是字母、数字或下划线。

所以,re.match('ve\b', 've2test') 这个调用会检查字符串 "ve2test" 是否从开始就符合 "ve" 后面紧跟一个单词边界的模式。

在这个例子中,"ve2test" 以 "ve" 开头,但 "ve" 后面紧跟着的是数字 "2",而不是一个单词边界。因此,re.match 会返回 None,表示没有匹配成功。

如果你想匹配 "ve" 后面是单词边界的情况,你可以使用如下的正则表达式:

import re
print(re.match('ve\b', 've test'))

这将会输出一个匹配对象,因为 "ve" 后面是一个空格,它是一个单词边界。

image.png

正则的转义字符,以\开头

字符串的转义字符,以\开

转义字符在执行时,先执行字符串转义,再执行正则的转义

我们需要在字符串前面加上r取消字符串的转义

对于这个\b的话

ve\b

e的左边是数字字母,那么右边就不能是数字字母了

数字字母设置了\b边界,那么后面就不能是数字字母,后面必须是非数字字母的内容

那么大写的b就是相反的情况

print(re.match('ve\b','ve2test'))
#None
print(re.match(r've\b','ve!2test'))
#<re.Match object; span=(0, 2), match='ve'>

print(re.match('ve\B','ve2test'))
#<re.Match object; span=(0, 2), match='ve'>
print(re.match('ve\B','ve!2test'))

#None

b在正则里面是边界,但是在字符串里面是退格符

image.png

相关文章
|
3月前
|
Python
Python正则
【10月更文挑战第18天】
Python正则
|
2月前
|
存储 Python Perl
python正则语法
本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
25 2
|
3月前
|
JavaScript 前端开发 Scala
Python学习十:正则表达式
这篇文章是关于Python中正则表达式的使用,包括re模块的函数、特殊字符、匹配模式以及贪婪与非贪婪模式的详细介绍。
25 0
|
5月前
|
Python
Python中的正则
【8月更文挑战第10天】
37 2
|
8月前
|
Python
python小案例-re正则
python小案例-re正则
|
Python
【从零学习python 】62. Python正则表达式:强大的字符串匹配工具
【从零学习python 】62. Python正则表达式:强大的字符串匹配工具
85 0
|
数据库 Python Perl
Python学习笔记第十八天(正则)
Python学习笔记第十八天讲解正则表达式、检索和替换的用法。
69 0
Python学习笔记第十八天(正则)
|
Python
python正则
python正则
93 0
python正则
|
测试技术 Python
从0开始学正则表达式-基于python
关于正则表达式,当我们了解它就不难,不了解就很难,其实任何事情都是这样,没有人一生下来就啥都会,说白了,每个人都是一个学习了解进步的过程。学习和掌握正则表达式可能并不是太简单,因为它确实是有点像“外星语”。
1144 0