教你学会使用Python正则表达式

 更新时间:2017年09月07日 08:50:24   作者:米乐果果  
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。

今天写爬虫偶然想到了初学正则表达式时候,看过一篇文章非常不错。检索一下还真的找到了。

re模块

re.search

经常用match = re.search(pat, str)的形式。因为有可能匹配不到,所以re.search()后面一般用if statement。

re.match

re.match和re.search很相似,只是re.match是从字符串的开头开始匹配。

常用正则字符意义 a, X, 9,等字符匹配自己, 元字符不匹配自己,因为有特殊意义,比如 . ^ $ * + ? { }[ ] \ | ( ) . 英文句号,匹配任意字符,不包含'\n' \w 匹配'word'字符,[a-zA-Z0-9] \W 匹配非'word'字符 \b 匹配'word'和'non-word'之间边界 \s 匹配单个whitespace字符,space, newline, return, tab, form [\n\r\t\f] \S 匹配non-whitespace字符 \t, \n, \r 匹配tab, newline, return \d 匹配数字[0-9] ^ 匹配字符串开头 $ 匹配字符串结尾 重复

‘+' 一或多次, ‘*' 零或多次, ‘?' 零或一次

方括号[]

[]类似于or

Square brackets can be used to indicate a set of chars, so [abc] matches 'a' or 'b' or 'c'.

Group Extraction圆括号()

有时候需要提取匹配字符的一部分,比如刚才的邮箱,我们可能需要其中的username和hostname,这时候可以用()分别把username和hostname包起来,就像r'([\w.-]+)@([\w.-]+)',如果匹配成功,那么pattern不改变,只是可以用match.group(1)和match.group(2)来username和hostname,match.group()结果不变。

findall and groups

()和findall()结合,如果包括一或多个group,就返回a list of tuples。

给re.search加^之后是一样的。

re.sub

re.sub(pat, replacement, str)在str里寻找和pattern匹配的字符串,然后用replacement替换。replacement可以包含\1或者\2来代替相应的group,然后实现局部替换。

相关文章

  • 详解MindSpore自定义模型损失函数

    详解MindSpore自定义模型损失函数

    在不同的训练场景中,我们时常需要使用不同的损失函数来衡量一个模型的计算结果的优劣,本文重点介绍了在MindSpore中如何去自定义一个损失函数。基于MindSpore中的Loss类,我们可以通过继承该类后,再重写construct函数和get_loss函数实现全面自定义的损失函数形式与内容
    2021-06-06
  • Python可执行文件反编译教程(exe转py)

    Python可执行文件反编译教程(exe转py)

    python的便利性,使得如今许多软件开发者、黑客都开始使用python打包成exe的方式进行程序的发布,那么Python如何反编译可执行文件,本文就来介绍一下,感兴趣的可以了解一下
    2021-12-12
  • python通过设置WordCloud参数实现定制词云

    python通过设置WordCloud参数实现定制词云

    这篇文章主要为大家详细介绍了python如何通过设置WordCloud参数实现定制词云,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • pytorch部署到jupyter中的问题及解决方案

    pytorch部署到jupyter中的问题及解决方案

    这篇文章主要介绍了pytorch部署到jupyter中,在这里需要注意我再输入的时候出现了一些无法定位的提示,但是我的电脑没有影响使用jupyter,还是可以使用jupyter并且可以import torch,本文给大家讲解的非常详细,需要的朋友参考下吧
    2022-05-05
  • python实战之Scrapy框架爬虫爬取微博热搜

    python实战之Scrapy框架爬虫爬取微博热搜

    前面讲解了Scrapy中各个模块基本使用方法以及代理池、Cookies池。接下来我们以一个反爬比较强的网站新浪微博为例,来实现一下Scrapy的大规模爬取。
    2021-09-09
  • Python实现CAN报文转换工具教程

    Python实现CAN报文转换工具教程

    这篇文章主要介绍了Python实现CAN报文转换工具教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python使用itertools模块实现排列组合功能示例

    Python使用itertools模块实现排列组合功能示例

    这篇文章主要介绍了Python使用itertools模块实现排列组合功能,涉及Python基于itertools模块product、permutations与combinations_with_replacement方法进行排列、组合等相关操作实现技巧,需要的朋友可以参考下
    2018-07-07
  • 使用pycharm+conda配置虚拟环境的详细步骤

    使用pycharm+conda配置虚拟环境的详细步骤

    这篇文章主要介绍了使用pycharm创建新的项目环境并使用conda进行配置和使用pycharm引用已有的conda虚拟环境,文中通过图文结合的方式介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • 解决Django transaction进行事务管理踩过的坑

    解决Django transaction进行事务管理踩过的坑

    这篇文章主要介绍了解决Django transaction进行事务管理踩过的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Python图像处理模块ndimage用法实例分析

    Python图像处理模块ndimage用法实例分析

    这篇文章主要介绍了Python图像处理模块ndimage用法,结合实例形式分析了Python图像处理模块ndimage基本功能及常见的图形运算操作实现技巧,需要的朋友可以参考下
    2019-09-09

最新评论