一、正则式表达式语法
正则表达式是一种用来匹配字符串的强有力的武器,设计思想是一种描述性的语言来给字符串定义一个规则,烦死符合规则的字符串,就认为它匹配,否则不匹配
行定位符:用来描述字符串的边界
^:表示行的开始 $:表示行的结尾
eg:^tm #表示要匹配字符串tm的开始位置是行头
tm^ #表示要匹配字符串tm的开始位置是行尾
tm: #表示要匹配字符串tm的开始位置是任意位置
元字符:指在正则表达式中具有特殊意义的专用字符(如:^、$)
. :匹配除换行以外的任意字符 \w:匹配字母或数字或下划线或汉字
\s:匹配任意的空白符 \d:匹配数字
\b:匹配单词的开始或结束 ^:匹配任意字符串的开始
$:匹配字符串的结束
限定符(重复):限制匹配数量
eg:^\d{8}$ #匹配8位数的QQ号
?:匹配前面的字符零次或一次 colou?r #可匹配color或colour
+:匹配前面的字符一次或多次 go+gle #可匹配gogle到goo…gle
*:匹配前面的字符零次或多次 go*gle #可匹配ggle到goo…gle
{n}:匹配前面的字符n次 go{2}gle #可匹配google
{n,}:匹配前面字符最少n次 go{2,}gle #可匹配google到goo…gle
{n,m}:匹配前面字符最少n次最多m次 go{0,2}gle #可匹配ggle、gogle、google
字符类:定义一个字符集合,匹配集合中的字符,使用[]表示(主要针对没有预定义元字符集合)
[0-9] #等同于\d,匹配数字 [a-z0-9A-Z] #(只考虑英文时)等同于\w
[aeiuo] #匹配英文元音字母 [.?!] #匹配标点符号“.”“?”“!”
排除字符:匹配不符合指定字符集合的字符串(用^表示,但在[]中使用)
[^a-zA-Z] #不是字母的集合
选择字符:用来表示匹配一个集合或另一个集合(用|表示)
[a-z]|[0-9] #匹配a-z或0-9的字符
(^\d{15}$)|(^\d{18}$)|(^\d{17})(\d|X|x)$
#表示15位纯数字或18位纯数字或者前17位纯数字最后一位位为X或x
转义字符:使用\表示,把一个特殊字符转义成普通字符,“()”在正则表达式中也算是一个元字符
分组(子表达式):使用()表示
()可以改变限定字符的作用范围
(thir|four)th #表示可以匹配thirth或fourth
()可以分组
(\.[0-9]{1,3}){3} #就是对分组(\.[0-9]{1,3})进行重复三次操作
正则表达式语法:
使用正则表达式时,时将其作为模式字符串使用的(模式字符串中的\等符号需要转义)
'[a-zA-Z]' #匹配不是字母的字符
'\\bm\\w*\\b' #匹配以m开头的单词(其中一个\为转义字符)
模式字符串中含有大量特殊字符串时,可以使用原生字符串表示(在模式字符串前加R或r)
r'\bm\w*\b' #等同于'\\bm\\w*\\b'的效果,匹配以m开头的单词
在编写模式字符串时,并不是所有的反斜杠都需要转换,^\d{8}$就不需要,因为\d没有特殊意义,为了书写方便,一般使用原生字符串表示
二、使用re模块实现正则表达式操作
re模块的compile()方法将模式字符串转换成正则表达式对象,然后再使用该正则表达式对象的相关方法来操作字符串,使用re模块时,需要先用import导入(import re)
匹配字符串:使用re模块提供的match()、search()和findall()方法
    • 使用match()方法匹配:用于从字符串的开始处进行匹配(起始位置匹配成功,则显示match对象,否则显示None)
re.match(pattern,string,[flags])
pattern:表示模式字符串,由要匹配的正则表达式转换而来
string:表示要匹配的字符串
flags:可选参数,表示标志位,用于控制匹配方式(如是否区分大小写)
常用标志位
            • A或ASCII:对于\w、\W、\b、\B、\D、\d、\s、\S只进行ASCII匹配(仅Python3中)
            • I或IGNORECASE:执行不区分字母大小写的匹配
            • M或MULTILINE:将^或$用于包括整个字符串的开始和结尾的每一行(默认仅适用于整个字符串的开始处和结尾处)
            • S或DOTALL:使用“.”字符匹配所有字符,包括换行符
            • X或VERBOSE:忽略模式字符串中未转义的空格和注释
eg:import re
a = r'mr_\w+'
b = 'MR_SHOP mr_shop'
c = re.match(a,b,re.I)
print(c,"\n")
d = '项目名称 MR_SHOP mr_shop'
c = re.match(a,d,re.I)
print(c)
匹配以mr_开头,不区分字母大小写的字符串
    • 使用search()方法匹配:在整个字符串中搜索第一个匹配的值,如起始位置匹配成功,则显示match对象,否则显示None
re.search(pattern,string,[flags])
eg:a = r'mr_\w+'
b = 'MR_SHOP mr_shop'
c = re.search(a,b,re.I)
print(c,"\n")
d = '项目名称 MR_SHOP mr_shop'
c = re.search(a,d,re.I)
print(c)
    • 使用findall()方法匹配:在整个字符串中搜索所有复核正则表达式的字符串,并以列表形式返回,匹配成功者返回包含匹配结构的列表,否则返回空列表
re.findall(pattern,string,[flags])
eg:import re
a = r'mr_\w+
b = 'MR_SHOP mr_shop'
c = re.findall(a,b)
print(c,"\n")
d = '项目名称 MR_SHOP mr_shop'
c = re.findall(a,d,re.I)
print(c)
注:在指定的模式字符串中包含分组时,则返回与分组匹配的文本列表(要想获取整个模式字符串的匹配,可以将整个模式字符串用()进行分组,然后再获取结果时,只取返回值列表的每个元素(返回元组)的第一个元素
eg:import re
a = r'[1-9]{1,3}(\.[0-9]{1,3}){3}'
b = '127.0.0.1 192.168.1.66'
c = re.findall(a,b)
print(c)
eg:import re
a = r'([1-9]{1,3}(\.[0-9]{1,3}){3})'
b = '127.0.0.1 192.168.1.66'
c = re.findall(a,b)
for d in c:
print(d[0])
替换字符串:sub()方法
re.sub(pattern,repl,string,count,flags)
pattern:表示模式字符串
repl:表示替换的字符串
string:表示要被查找替换的原始字符串
count:可选参数,表示模式匹配后替换的最大次数,默认为0,表示替换所有的匹配
flags:可选参数,表示标志位,用于控制匹配方式
eg:import re
a = r'1[34578]\d{9}' #定义11位手机号码的模式字符串
b = '中奖号码为:84978981,联系电话为13611111111'
print(re.sub(a,'1XXXXXXXXXXX',b))
使用正则表达式分割字符串:根据正则表达式分割字符,并以列表形式返回;split()方法
re.split((pattern,string,[maxsplit],[flags]))
pattern:模式字符串,有要匹配的正则表达式转换而来
string:要匹配的字符
maxslip:可选参数,表示最大的拆分次数
flags:可选参数,表示标志位
eg:import re
a = r'[?|&]'
url = 'https://www.baidu.com/s?ie=utf-8&f=8&rsv'
print(re.split(a,url))

七、Python-正则表达式的更多相关文章

  1. Python爬虫入门七之正则表达式

    在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的 ...

  2. 转 Python爬虫入门七之正则表达式

    静觅 » Python爬虫入门七之正则表达式 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串 ...

  3. Python正则表达式的七个使用范例-乾颐堂

    作为一个概念而言,正则表达式对于Python来说并不是独有的.但是,Python中的正则表达式在实际使用过程中还是有一些细小的差别. 本文是一系列关于Python正则表达式文章的其中一部分.在这个系列 ...

  4. Python正则表达式初识(七)

    继续分享Python正则表达式的基础知识,今天给大家分享的特殊字符是“\s”.“\S”,具体的教程如下. 1.“\s”代表的意思是匹配空格,匹配模式“加\s油”代表的是字符“加”和“油”之间有空格的意 ...

  5. Python正则表达式的七个使用范例

    本文由 伯乐在线 - 左手的灵魂 翻译.未经许可,禁止转载!英文出处:thegeekstuff.欢迎加入翻译组.http://blog.jobbole.com/74844/ 作为一个概念而言,正则表达 ...

  6. Python正则表达式学习摘要及资料

    摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...

  7. python正则表达式 小例几则

    会用到的语法 正则字符 释义 举例 + 前面元素至少出现一次 ab+:ab.abbbb 等 * 前面元素出现0次或多次 ab*:a.ab.abb 等 ? 匹配前面的一次或0次 Ab?: A.Ab 等 ...

  8. Python 正则表达式学习

    摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2, ...

  9. python正则表达式-re模块

    目录: 一.正则函数 二.re模块调用 三.贪婪模式 四.分组 五.正则表达式修饰符 六.正则表达式模式 七.常见的正则表达式 导读: 想要使用python的正则表达式功能就需要调用re模块,re模块 ...

  10. Python正则表达式初识(十)附正则表达式总结

    今天分享正则表达式最后一个特殊字符“\d”,具体的教程如下. 1.特殊字符“\d”十分常用,其代表的意思是数字.代码演示如下图所示. 其中“+”的意思是表示连续,在这里代表的意思是连续的数字.但是输出 ...

随机推荐

  1. 同时兼容ie8 与ie11

    最近公司发文规定说程序要必须同时兼容ie8与ie11 下面是在修改程序时遇到的一些问题. 1:new Date 获取年的问题,在ie8及以下ie以下版本是可以用getYear()方法来获取年得到的数值 ...

  2. 7 种 join

    DROP TABLE IF EXISTS `test_student`; CREATE TABLE `test_student` ( `id` ) NOT NULL COMMENT '学号', `se ...

  3. React Native 开发环境搭建

    1.安装 Python 2,不知道是否已支持 Python 3 2.安装 node,npm... 修改 npm 镜像,不建议使用 cnpm,cnpm 安装模块的路径与 npm 有差别 npm conf ...

  4. 在Ubuntu15.10中,使用wxPython的webview和JS进行交互

    在Ubuntu下进行wxPython开发,因为需求,所以使用了wxPython的webview和JS的交互. 在Windows下,下图显示的代码可以正常的运行,但是在Ubuntu下进行开发,以下的代码 ...

  5. docker 网络 路由

    通过在Docker宿主机上添加静态路由实现跨宿主机通信 模拟环境 主机1(192.168.58.144) 设置docker0 网关 (172.17.0.1/16)                主机2 ...

  6. zabbix监控到异常后自动执行对应命令

    zabbix可不仅仅只有监控功能,还支持远程执行命令,实现简单自动化运维 以下以监控mysql的3306端口为例,如该端口异常关闭,自动执行命令重启mysql 创建一个监听3306的监控项,键值按照这 ...

  7. c++——智能指针学习(unique_ptr)

    1.为什么会有unique_ptr? 动态内存忘记delete,导致内存泄漏.比如: p = new (); if(...) { return ; } delete p; 因此我们需要一种方式来解决这 ...

  8. ES6新增的数据类型Map和Set。

    Javascript的默认对象表示方式 {} ,即一组键值对. 但是Javascript的对象有个小问题,就是键必须是字符串.但实际上Number或者其他数据类型作为键也是非常合理的. 为了解决这个问 ...

  9. Django之 静态模板渲染

    既可以简单的 django.http.HttpResponse 来把内容显示到网页上,也可以使用渲染模板的方法来显示内容. 说明:代码是基于 Django 1.8,但 Django 1.4 - Dja ...

  10. intval — 获取变量的整数值

    echo intval ( '-42' ); // -42