正则表达式,以python为例
转载需注明原文地址和作者两项内容。
正则表达式目的是能够快速处理字符串内容,主要用于找出指定的字符串,配合其他操作完成任务。
使用正则表达式时要了解自己语言的特性,python中的正则表达式默认情况是贪婪模式,也就是不限制的情况下会尽可能多得匹配字符串。
不同的语言实现的方式不一样,一个特性的地方要注意。
0x00 基础语法
.:匹配除换行符以外的任意字符
2 \s:匹配任意的空白符
3 \d:匹配数字
4 \D:匹配任何的非数字,等价于[^0-9]
5 \b:匹配单词的分界线
6 \B:匹配一个单词的非分界线
7 ^:匹配字符串的开始
8 $:匹配字符串的结束
9 \w:匹配包括下划线的任何单词字符.类似但不等价于“[A-Za-z0-9_]”,Unicode字符集,能不能匹配汉字要视应用环境而定
10 \W:匹配任何非单词字符.等价“[^A-Za-z0-9_]”
11 \:转义,其后字符不作表达式解释
12 *:匹配*前面的字符0次或n次,等价于{0,}
13 +:匹配+号前面的字符1次或n次.等价于{1,}
14 ?:匹配?前面的字符0次或1次,等价于 {0,1}
15 (x):匹配’x’并记录匹配的值
16 x│y:匹配表达式x或y
17 {n}:匹配前面限定的字符n次
18 {n,}:匹配前面限定的字符至少n次
19 {n,m}:匹配前面限定的字符n-m次均可
20 [xyz]:单字符列表,匹配括号中的任一字符.可用连字符‘-’指出字符范围
21 [^xyz]:单字符列表的补集,匹配除了列出字符外的,同样可指出字符范围
22 \f:匹配一个表单符
23 \n:匹配一个换行符
24 \r:匹配一个回车符
25 \s:匹配一个单个white空格符,包括空格,tab,form feed,换行符,等价于[ fnrtv]
26 \S:匹配除white空格符以外的一个单个的字符,等价于[^ fnrtv]
27 t:匹配一个制表符
28 v:匹配一个顶头制表符
29 \:将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符
0x01 python正则模块
import re
导入python正则表达式模块
re.compile(str)
用于将字符串型的正则表达式编译成一个正则表达式对象,可以直接使用对该对象使用re的方法。
返回pattern
re.findall(pattern,str)
将字符串按照正则表达式进行处理,第一个参数是匹配的正则规则,可接收pattern和字符串型的正则表达,第二个是待处理的字符串。
返回list
re.sub(pattern, replace, string, count)
将字符串中正则表达式匹配到的内容替换成指定的内容。
第二个函数是用于替换的字符串
第四个参数指替换个数。默认为0,表示每个匹配到的内容都替换。
返回str
re.sub还允许使用函数对匹配项的替换进行复杂的处理(参数2)。如:re.sub(r'\s', lambda m: '[' + m.group(0) + ']', text, 0);将字符串中的空格' '替换为'[ ]'。
re.split(pattern,str)
用于以正则匹配到的内容作为分隔符,分割字符串。
返回list
re.match(pattern, string, flags)
尝试从字符串的开始匹配,字符串的起始处不符合正则表达式,则匹配失败。
成功返回match,失败返回None。
(内容可以用group()方法查看。)
第三个参数是标致位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
re.search(pattern, string, flags)
在整个字符串内匹配查找,找到第一个匹配然后返回,如果字符串没有匹配,则返回None。
参数同re.match。
成功返回match,失败返回None。
上述pattern也可以用str型的字符串替换,效果相同。
.groups()对象包括了正则表达式匹配到的所有的内容。
.group()是groups()中的一个对象。
python的findall可以使用()圈定取出的范围,比如要匹配文字src=“/xxx.jpg”中的xxx,正则表达式可以这么写src="(.+)\.jpg)",最后直接返回结果为xxx。
0x02 栗子
IPv4地址
\d{,}\.\d{,}\.\d{,}\.\d{,}
URL(同时也是一个最小的非贪婪匹配栗子)
http://.*?/
匹配文件后缀
.*\.php
匹配行首空格
^\s
匹配同一单词不区分大小写
[Tt]ools
0x03 python正则中特殊控制标记
python正则表达式模块中的函数支持使用特殊的控制标记来做一些微调。这些控制标记通常作为参数传入。
re.I
字母不区分大小写的匹配
re.X
使用"""作为表达式的分割,可以写多行正则并且可以使用#进行行注释,编译时会忽略
re.A
选用ASCII字符匹配
re.S
使得.可以匹配换行符\n
re.M
使用后,^匹配字符串的开头以及每个行的开头(每个换行符后); $匹配字符串的末尾以及每一行的结尾(每个换行符前)。默认情况下,^只匹配字符串的开始,$只匹配字符串的末尾和字符串末尾换行符之前的位置。
re.L
\w, \W, \b, \B, \s , \S等适应本土语言
如有错误请留言指正,之后遇到更多情况会陆续补充。
正则表达式,以python为例的更多相关文章
- 正则表达式与Python中re模块的使用
正则表达式与Python中re模块的使用 最近做了点爬虫,正则表达式使用的非常多,用Python做的话会用到re模块. 本文总结一下正则表达式与re模块的基础与使用. 另外,给大家介绍一个在线测试正则 ...
- 常用正则表达式与python中的re模块
正则表达式是一种通用的字符串匹配技术,不会因为编程语言不一样而发生变化. 部分常用正则表达式规则介绍: . 匹配任意的一个字符串,除了\n * 匹配任意字符串0次或者任意次 \w 匹配字母.数字.下划 ...
- python全栈开发之正则表达式和python的re模块
正则表达式和python的re模块 python全栈开发,正则表达式,re模块 一 正则表达式 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的 ...
- (转)正则表达式与Python(RE)模块
Python正则表达式指南 原文:http://blog.csdn.net/qdx411324962/article/details/46799831 Python3(2):正则表达式与Python ...
- 以Python为例的Async / Await的编程基础
来源:Redislabs 作者:Loris Cro 翻译:Kevin (公众号:中间件小哥) 近年来,许多编程语言都在努力改进它们的并发原语.Go 语言有 goroutines,Ruby 有 fibe ...
- 【转】以Python为例的Async / Await的编程基础
转, 原文:https://www.cnblogs.com/middleware/p/11996731.html 以Python为例的Async / Await的编程基础 -------------- ...
- 以python为例讲解闭包机制
以python为例讲解闭包机制 缘起 在学习JS的过程中,总是无可避免的接触到闭包机制,尤其是接触到react后,其函数式的编程思想更是将闭包发扬光大,作为函数式编程的重要语法结构,python自然也 ...
- 1.3 正则表达式和Python语言-1.3.5使用 search()在一个字符串中查找模式(搜索与匹配 的对比)
1.3.5 使用 search()在一个字符串中查找模式(搜索与匹配的对比) 其实,想要搜索的模式出现在一个字符串中间部分的概率,远大于出现在字符串起始部分的概率.这也就是 search()派上用场的 ...
- 【归纳】正则表达式及Python中的正则库
正则表达式 正则表达式30分钟入门教程 runoob正则式教程 正则表达式练习题集(附答案) 元字符\b代表单词的分界处,在英文中指空格,标点符号或换行 例子:\bhi\b可以用来匹配hi这个单词,且 ...
随机推荐
- c++ 类数据成员的定义、声明
C++为类中提供类成员的初始化列表类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员2.进入构造函数后在构造函数中执行一般计算 1.类里面的任何成员变量在定义时是不 ...
- HTML性能优化
摘要: 页面优化是对网页中的HTML代码进行必要的调整,可以有效地精简页面中的冗余代码,加快网页显示速度,减少网页占用搜索引擎服务器的存储空间,提高用户体验和搜索引擎友好性,当然也可以更好的突出页面的 ...
- 13年10月 月赛第一场 set 4 迷宫问题
题目 给定一个n*m的迷宫,如S....#E.E其中,S代表开始位置,#代表不可行走的墙,E代表出口.主人公从开始位置出发,每次等概率的随机选择下一个可以行走的位置(可能会发生回溯),直到到达某一个出 ...
- Ext3.4-EXT之嵌套表格的实现
其中使用到的"RowExpander.js"为extjs官方示例中自带的. 实现这个嵌套表格要注意两点技巧: 1 提供给外层表格的dataStore的数据源以嵌套数组的形式表示细节 ...
- ALM在win7/IE8下无法浏览
操作系统WIN7 64位. 安装完ALM后,用IE8打开查看,没有登录界面,提示需要安装东西. 按照提示安装,没有响应,然后到网上查了一下资料: ALM/QC11.0在win8/IE11下无法浏览 页 ...
- Size Balanced Tree
Size Balanced Tree(SBT)是目前速度最快的平衡二叉搜索树,且能够进行多种搜索操作,区间操作:和AVL.红黑树.伸展树.Treap类似,SBT也是通过对节点的旋转来维持树的平衡,而相 ...
- Fatal error Using $this when not in object context in
大致意思是 $this 没有上下文,原因是没有对此类进行实例化. 出现此错误的原因是:在FileCommand.php中使用 $this->方法/属性. $this 不是不可以用,而是要看情况用 ...
- C#如何判断程序调用的exe已结束
二个方法:以运行系统记事本为例 方法一:这种方法会阻塞当前进程,直到运行的外部程序退出System.Diagnostics.Process exep = System.Diagnostics.Proc ...
- 310实验室 Linux 软件安装常见问题
电脑装好Linux系统后,系统默认安装软件不齐,需要自己根据自己的需要安装一些列工具软件,在linux系统中,用的最多的就是Synaptic Package Manager,什么是Synaptic?新 ...
- Redis构建处理海量数据的大型购物网站
本系列教程内容提要 Java工程师之Redis实战系列教程教程是一个学习教程,是关于Java工程师的Redis知识的实战系列教程,本系列教程均以解决特定问题为目标,使用Redis快速解决在实际生产中的 ...