【Python】Python学习笔记(二)——正则表达式

原创 2017年05月02日 10:48:52

正则表达式的大致匹配过程

1.依次拿出表达式和文本中的字符比较,
2.如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。
3.如果表达式中有量词或边界,这个过程会稍微有一些不同。

这里写图片描述


数量词的贪婪模式与非贪婪模式

正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式”ab*”如果用于查找”abbbc”,将找到”abbb”。而如果使用非贪婪的数量词”ab*?”,将找到”a”。

注:一般使用非贪婪模式来提取。

反斜杠问题

与大多数编程语言相同,正则表达式里使用”\”作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符”\”,那么使用编程语言表示的正则表达式里将需要4个反斜杠”\\”:前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。


import re
re.compile(string[,flag])  
#以下为匹配所用函数
#参数flag是匹配模式,取值可以使用按位或运算符’|’表示同时生效,比如re.I | re.M。
re.match(pattern, string[, flags])
re.search(pattern, string[, flags])
re.split(pattern, string[, maxsplit])
re.findall(pattern, string[, flags])
re.finditer(pattern, string[, flags])
re.sub(pattern, repl, string[, count])
re.subn(pattern, repl, string[, count])

 • re.I(全拼:IGNORECASE): 忽略大小写(括号内是完整写法,下同)
 • re.M(全拼:MULTILINE): 多行模式,改变'^'和'$'的行为(参见上图)
 • re.S(全拼:DOTALL): 点任意匹配模式,改变'.'的行为
 • re.L(全拼:LOCALE): 使预定字符类 \w \W \b \B \s \S 取决于当前区域设定
 • re.U(全拼:UNICODE): 使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
 • re.X(全拼:VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。

1.string: 匹配时使用的文本。
2.re: 匹配时使用的Pattern对象。
3.pos: 文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
4.endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。
5.lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None。
6.lastgroup: 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。
方法:
1.group([group1, …]):
获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。
2.groups([default]):
以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。
3.groupdict([default]):
返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。
4.start([group]):
返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引)。group默认值为0。
5.end([group]):
返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引+1)。group默认值为0。
6.span([group]):
返回(start(group), end(group))。
7.expand(template):
将匹配到的分组代入template中然后返回。template中可以使用\id或\g、\g引用分组,但不能使用编号0。\id与\g是等价的;但\10将被认为是第10个分组,如果你想表达\1之后是字符’0’,只能使用\g0。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

RNN,LSTM手写数组的识别,saver保存以及加载。

(一)环境搭建: Python3.5,TensorFlow1.0或者1.2, (二)实验描述: 利用TensorFlow中的rnn和lstm库对手写数字图像分类。 手写数字数据,如果本地没有,...

傅里叶:有关FFT,DFT与蝴蝶操作(转 重要!!!!重要!!!!真的很重要!!!!)

转载自:http://blog.renren.com/share/408963653/15068964503 作者 :  徐可扬(感谢可杨学长) 侵删 有关FFT,DFT与蝴蝶操作...

Python学习笔记(十一)——正则表达式

re 模块使 Python 语言拥有全部的正则表达式功能。匹配re.search 扫描整个字符串并返回第一个成功的匹配。 函数语法:re.search(pattern, string, flags=...

python学习笔记二(正则表达式)

在爬取网页信息的时候,是否有过用循环截取字符串的

Python学习笔记8:标准库之正则表达式

Python拥有强大的标准库。从现在起,开始学习标准库中提供的一些常用功能。 首先看正则表达式(regular expression),它的主要功能是从字符串(string)中通过特定的模式(patt...

Python 正则表达式之 补充学习笔记

re.search(pattern , string[ , flags])¶Scan through string looking for a location where the regula...

python学习笔记18-正则表达式

1. 正则表达式简介 正则biao'da's

Python学习笔记之正则表达式基本知识

正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的一般字符串 #encodi...

37 Python 正则表达式学习笔记

Python正则表达式使用指南,详细介绍了正则表达式的语法,原生字符,详细介绍了Python中re模块的使用方法,Pattern对象,match对象的使用方法以及测试示例。...
  • lis_12
  • lis_12
  • 2017年01月23日 09:44
  • 270

廖雪峰python学习笔记15.正则表达式入门

# -*- coding:utf-8 -*- #正则表达式是一种用来匹配字符串的强有力的武器 #用\d可以匹配一个数字,\w可以匹配一个字母或数字 """ '00\d'可以匹配'007',但无法匹...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Python】Python学习笔记(二)——正则表达式
举报原因:
原因补充:

(最多只允许输入30个字)