当前位置:   article > 正文

python基础教程之re模块详解_python re

python re


在这里插入图片描述

一、re是什么?

正则表达式是一个特殊的字符序列,能方便的检查一个字符串是否与某种模式匹配。re模块使得python拥有全部的正则表达式功能。

二、re 模块的作用

通过使用正则表达式,可以:
测试字符串内的模式。—— 例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。
替换文本。—— 可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。
基于模式匹配从字符串中提取子字符串。—— 可以查找文档内或输入域内特定的文本。

三、re模块的使用

1、常用方法

  • findAll(): 匹配所有的字符串,把匹配结果作为一个列表返回
  • match(): 匹配字符串的开始位置,如果开始位置没有,则返回None
  • search():在字符串中搜索,返回搜索到的第一个
  • finditer():匹配所有的字符串,返回迭代器

2、 元字符

匹配任意字符(除\n以外) h. 代表匹配h后的任意一个字符

import re
res = 'h.'
s = 'hello python'
result = re.findall(res, s)
print(result)  # \['he', 'ho'\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

[] 拿[]中的人任意一个字符,去字符串中匹配,匹配到一个返回一个,最后以列表返回

import re
res2 = '\[hon\]'
s = 'hello python'
result = re.findall(res2, s)
print(result)  # \['h', 'o', 'h', 'o', 'n'\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

\d 匹配数字0-9

import re
res2 = '\[\\d\]'
s = 'hell666o pyt999hon'
result = re.findall(res2, s)
print(result)  # \['6', '6', '6', '9', '9', '9'\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

\D 匹配非数字, 包含空格

import re
res2 = '\[\\D\]'
s = 'hello 3334 python 88'
result = re.findall(res2, s)
print(result)  # \['h', 'e', 'l', 'l', 'o', ' ', ' ', 'p', 'y', 't', 'h', 'o', 'n', ' '\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

‘\s’ 匹配空白字符

import re
res2 = '\[\\s\]'
s = 'hello 3334 python 88'
result = re.findall(res2, s)
print(result)  # \[' ', ' ', ' '\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

‘\S’ 匹配非空白字符

import re
res2 = '\[\\S\]'
s = 'hello 3334 python 88'
result = re.findall(res2, s)
print(result)  # \['h', 'e', 'l', 'l', 'o', '3', '3', '3', '4', 'p', 'y', 't', 'h', 'o', 'n', '8', '8'\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

\w 匹配非特殊字符,即a-z、A-Z、0-9、_、汉字

import re
res2 = '\[\\w\]'
s = 'hello#&\_ aa 8python中国'
result = re.findall(res2, s)
print(result)  # \['h', 'e', 'l', 'l', 'o', '\_', 'a', 'a', '8', 'p', 'y', 't', 'h', 'o', 'n', '中', '国'\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

\W 匹配特殊字符 ( - ~@#$&*)空格也属于特殊字符

import re
res2 = '\[\\W\]'
s = '-hello#&\_ aa 8python中国'
result = re.findall(res2, s)
print(result)  # \['-', '#', '&', ' ', ' '\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3、多字符匹配

(1)*:匹配前一个字符出现一次,或无限次 贪婪模式

import reres2 = 'h\*'s = '-hhello hhh python'result = re.findall(res2, s)print(result)  #\['', 'hh', '', '', '', '', '', 'hhh', '', '', '', '', 'h', '', '', ''\]import re
res2 = 'h\*'
s = '-hhello hhh python'
result = re.findall(res2, s)
print(result)  #\['', 'hh', '', '', '', '', '', 'hhh', '', '', '', '', 'h', '', '', ''\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(2) + :匹配前一个字符出现1次或无穷次

import re
res2 = 'h+'
s = '-hhello hhh python'
result = re.findall(res2, s)
print(result) # \['hh', 'hhh', 'h'\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(3)?: 匹配前一个字符出现0次或者1次,非贪婪模式

import re
res2 = 'h?'
s = '-hhello hhh python'
result = re.findall(res2, s)
print(result) # \['', 'h', 'h', '', '', '', '', '', 'h', 'h', 'h', '', '', '', '', 'h', '', '', ''\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(4) {n} :匹配前一个字符连续出现n次

import re
res2 = 'https{2}'
s = '-hhello-httpssss-python'
result = re.findall(res2, s)
print(result) # \['httpss'\] 
匹配到前一个字符s 连续出现2次

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

{n,m} :匹配前一个字符出现n-m次

import re
res2 = 'https{1,3}'
s = '-hhello-httpssss-python'
result = re.findall(res2, s)
print(result) # \['httpss'\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(5) 贪婪模式和非贪婪模式

正则表达式通常使用于查找匹配字符串。贪婪模式,总是尝试匹配尽可能多的字符;非贪婪模式正好相反,总是尝试匹配尽可能少的字符。在"*“,”?“,”+“,”{m,n}"后面加上?,使贪婪变成非贪婪。

(6) | :两个条件进行匹配,或的关系

import re
res2 = 'he|ll'
s = 'hello python'
result = re.findall(res2, s)
print(result) # \['he', 'll'\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(7)边界值:

^ :匹配以哪个字符开头的

import re
res2 = '^he'
s = 'hello python'
result = re.findall(res2, s)
print(result) # \['he'\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

$ : 匹配以哪个字符结尾的字符

import re
res2 = 'on$'
s = 'hello python'
result = re.findall(res2, s)
print(result) # \['on'\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4、分组匹配

() :只匹配()里面的

import re
res2 = '#(\\w.+?)#'
s = "{'mobile\_phone':'#mobile\_phone#','pwd':'Aa123456'}"
result = re.findall(res2, s)
print(result)  # \['mobile\_phone'\]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5、match()方法的使用

str = "www.runoob.com"
print(re.match('www', str).span())  # 在起始位置匹配 ,返回匹配到的区间下标  (0,3)
print(re.match('com', str))  # 不在起始位置匹配  None

  • 1
  • 2
  • 3
  • 4

6、 search():在字符串中搜索,返回搜索到的第一个

str = "www.runoob.com"
print(re.search('www', str).span())  # 在起始位置匹配 ,返回匹配到的区间下标
print(re.search('com', str).span())  # 不在起始位置匹配

  • 1
  • 2
  • 3
  • 4

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

7、 finditer():

匹配所有的字符串,返回迭代器和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

res = 'h.'
s = 'hello python'
result = re.finditer(res, s)
for str in result:
    print(str.group())
he
ho

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

关于Python技术储备

给大家分享一份全套的 Python 学习资料,希望提供给小伙伴们一点帮助!

保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python基础学习视频

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、Python工具包+项目源码合集
①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

六、Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以保存图片微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/172313
推荐阅读
相关标签
  

闽ICP备14008679号