还不会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,然后实现局部替换。

作者:米乐果果

来源:51CTO

时间: 2025-01-29 15:21:28

还不会Python正则表达式?看这篇文章试试的相关文章

Elasticsearch 5.0 —— Head插件部署指南(Head目前支持5.0了!请不要看本篇文章了)

使用ES的基本都会使用过head,但是版本升级到5.0后,head插件就不好使了.下面就看看如何在5.0中启动Head插件吧! Head目前支持5.0了!请不要看本篇文章了 Head目前支持5.0了!请不要看本篇文章了 Head目前支持5.0了!请不要看本篇文章了 Head目前支持5.0了!请不要看本篇文章了 官方粗略教程 Running with built in server enable cors by adding http.cors.enabled: true in elasticse

关于python解释器的几篇文章,非常不错

关于python解释器的几篇文章,非常不错 原文地址: http://akaptur.github.io/blog/categories/python-internals/ http://akaptur.github.io/blog/2013/11/15/introduction-to-the-python-interpreter/http://akaptur.github.io/blog/2013/11/15/introduction-to-the-python-interpreter-2/h

Python正则表达式之基础篇_正则表达式

正则表达式是用于处理字符串的强大工具,它并不是Python的一部分. 其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语法数量不同. 它拥有自己独特的语法以及一个独立的处理引擎,在提供了正则表达式的语言里,正则表达式的语法都是一样的. 下图展示了使用正则表达式进行匹配的流程: 1.1介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了

Python正则表达式之基础篇

正则表达式是用于处理字符串的强大工具,它并不是Python的一部分. 其他编程语言中也有正则表达式的概念,区别只在于不同的编程语言实现支持的语法数量不同. 它拥有自己独特的语法以及一个独立的处理引擎,在提供了正则表达式的语言里,正则表达式的语法都是一样的. 下图展示了使用正则表达式进行匹配的流程: 1.1介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了

还记得 Flappy Bird 么?这篇文章教你如何用神经网络破朋友圈纪录!

以下内容来源于一次部门内部的分享,主要针对AI初学者,介绍包括CNN.Deep Q Network以及TensorFlow平台等内容.由于笔者并非深度学习算法研究者,因此以下更多从应用的角度对整个系统进行介绍,而不会进行详细的公式推导. 关于Flappy Bird  Flappy Bird(非官方译名:笨鸟先飞)是一款2013年鸟飞类游戏,由越南河内独立游戏开发者阮哈东(Dong Nguyen)开发,另一个独立游戏开发商GEARS Studios发布.-- 以上内来自<维基百科> Flappy

深度学习自动编码器还能用于数据生成?这篇文章告诉你答案

  什么是自动编码器 自动编码器(AutoEncoder)最开始作为一种数据的压缩方法,其特点有: 跟数据相关程度很高,这意味着自动编码器只能压缩与训练数据相似的数据,这个其实比较显然,因为使用神经网络提取的特征一般是高度相关于原始的训练集,使用人脸训练出来的自动编码器在压缩自然界动物的图片是表现就会比较差,因为它只学习到了人脸的特征,而没有能够学习到自然界图片的特征: 压缩后数据是有损的,这是因为在降维的过程中不可避免的要丢失掉信息: 到了2012年,人们发现在卷积网络中使用自动编码器做逐层预

看了一篇文章,说天猫的商品详情页面是先存在本地,想请教这个想法的可行性

问题描述 我是初入行的实习生,比不了各位大牛,所以想请问一下,看了一篇文章,说天猫为了双十一,商品详情页这种访问量可以说是最大的类型页面,是先将页面框架保存在本地的,然后用户点开之后,请求数据时,将数据填充进去.我想了想,先用cookie保存现这种访问量超大的页面静态码html+js,然后ajax请求数据json,然后通过js动态绑定数据,感觉理论上好像可行,但是不知道具体实现是不是很难,还有这种做法对性能的提升和对服务器压力的影响有多大,望各位大牛指点一二 解决方案 解决方案二:文章的链接也共

【Python之旅】第三篇(三):Python正则表达式

说明:     Python的正则表达式功能强大,使用灵活,但由于目前对Python中正则表达式的使用和认识都比较浅,因此急于做笔记和总结显然是不可行的,因此,这里给出下面几篇不错的参考文档: 1.较为详细的Python正则表达式功能介绍的文档 http://www.cnblogs.com/xupeizhi/archive/2013/02/05/2892479.html 这是来自博客园的一位朋友写的总结,虽然在思路上不是很清晰,但是介绍得非常得详细,对于Python正则表达式的内容介绍比较多.

Python 正则表达式入门(初级篇)_python

引子 首先说 正则表达式是什么? 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列匹配某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些匹配某个模式的文本. 许多程序设计语言都支持利用正则表达式进行字符串操作.例如,在Perl中就内建了一个功能强大的正则表达式引擎.正则表达式这个概念最初