[Python编程]正则表达式

原创 2016年06月02日 18:46:49

[Python编程]正则表达式

目录:

1,引言

2,正则表达式语法

3,re模块


1,引言

正则表达式具有在文本中检索某种模式的能力,正则表达式(RE)为高级文本模式匹配,以及搜索-替代等功能提供了基础。正则表达式(RE)是一些由字符和特殊符号组成的字符串,它们描述了这些字符和字符的某种重复方式,因此能按某种模式匹配一个有相似特征的字符串的集合,因此能按某模式匹配一系列有相似特征的字符串。

很多语言都支持正则表达式,Python也不例外,Python也是有正则表达式模块re让Python更加适合处理文本和数据。Python通过标准库的re模块支持正则表达式(RE)。


2,正则表达式语法

下面是Python中正则表达式的一些匹配规则:(来源于Python核心编程)


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

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

2.2  反斜杠的困扰

与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r"\\"表示。同样,匹配一个数字的"\\d"可以写成r"\d"。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。


3,re模块

Python的re模块:核心函数和方法

模块的函数:

compile(pattern,flag=0) :对正则表达式模式pattern进行编译,flag是可选标识符,并返回一个regex对象

可以把正则表达式编译成一个正则表达式对象。可以把那些经常使用的正则表达式编译成正则表达式对象,这样可以提高一定的效率。

re模块的函数和regex对象的方法:

match(pattern,string,flag=0):尝试用正则表达式模式pattern匹配字符串string,flag是可选标识符,如果匹配成功,则返回一个匹配对象,否则返回None

search(pattern,string,flag=0):在字符串string中搜索正则表达式模式pattern的第一次出现,flag是可选标识符,如果匹配成功。则返回一个匹配对象,否则返回None

findall(pattern,string[,flags]):在字符串string中搜索正则表达式模式pattern的所有(非重复)出现:返回一个匹配对象的列表

finditer(pattern,string[,flags]):和findall()相同,但是返回的不是列表而是迭代器,对于每一个匹配,该迭代器返回一个匹配对象

split(pattern,string,max=0):更加正则表达式pattern中的分隔符吧字符string分割成为一个列表,返回成功匹配的列表,最多分割max次(默认是分割所有匹配的地方)

sub(pattern,repl,string,max=0):把字符串string中所有匹配正则表达式pattern的地方替换成字符串repl,如果max的值有给出,则对所有匹配的地方进行替换

匹配对象的方法:
group(num=0)
:返回全部匹配对象(或者指定编号是num的子组)

groups():返回一个包含全部匹配的子组的元组(如果没有成功匹配,就返回一个空元组)

<span style="font-size:18px;">import re

pattern = re.compile(r'foo')
m = re.match(pattern,'foohelloworldpython')
if m is not None:
	m.group()
else:
	print 'None'
'foo'

m = re.search(pattern,'hellopythonfoo')
if m is not None:
	m.group()
else:
	print 'None'

'foo'

re.findall(pattern,'foo findfooitem food')
['foo','foo','foo']

re.sub('X','Mr.Smith','attn:X\n\nDear X,\n')
'attn:Mr.Smith\012\012Dear Mr.Smith,\012'

re.split(':','str1:str2:str3')
['str1','str2','str3']</span>


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

Python正则表达式:如何使用正则表达式

正则表达式(简称RE)本质上可以看作一个小的、高度专业化的编程语言,在Python中可以通过re模块使用它。使用正则表达式,你需要为想要匹配的字符串集合指定一套规则,字符串集合可以包含英文句子、e-m...
  • liuy_98_1001
  • liuy_98_1001
  • 2015年06月08日 18:22
  • 3310

【python学习笔记】用正则表达式从含中文的网页中提取数据(含编码转换)

目标:用正则表达式从含中文的网页中提取数据 1、获得网页全部数据 1.1思考过程 确定我们要操作的网页:url = 'http://q.stock.sohu.com/cn/603077/cwzb.sh...
  • pzxzhy
  • pzxzhy
  • 2015年12月27日 17:05
  • 2446

python核心编程-正则表达式之-重复、特殊字符、子组

#!/usr/bin/env python # -*- coding: UTF-8 -*-import repatt = '\w+@(\w+\.)?\w+\.com' m = re.match(pat...
  • youhaibo1990
  • youhaibo1990
  • 2016年01月12日 23:23
  • 1060

Python 网络爬虫 009 (编程) 通过正则表达式来获取一个网页中的所有的URL链接,并下载这些URL链接的源代码

通过 正则表达式 来获取一个网页中的所有的 URL链接,并下载这些 URL链接 的源代码使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程...
  • github_35160620
  • github_35160620
  • 2016年09月19日 14:48
  • 21104

python核心编程学习笔记——正则表达式

学了很久的python基础,感觉自己的基础较牢固了,最近便开始学习《Python核心编程第三版》这本书。认真阅读了这本书第一章,发现这本书写得真的特别好,详细得当,但是遗憾的是感觉中文有些地方仍然翻译...
  • python_dream
  • python_dream
  • 2017年11月29日 21:00
  • 117

Python编程--正则表达式

1. 正则表达式概述正则表达式,(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某...
  • web2017321
  • web2017321
  • 2017年06月17日 15:26
  • 160

Python核心编程第15章正则表达式练习答案

#15-1 识别下列字符串:“bat,” “bit,” “but,” “hat,” “hit,” 或 “hut” pattern =  r'[bh][aiu]t,?' #15-2  匹配用...
  • iamzhaiwei
  • iamzhaiwei
  • 2012年10月09日 10:54
  • 3426

python 核心编程 正则表达式部分答案

正则表达式章节15-16到15-29答案 15-16  修改脚本gendata.py 的代码,使数据直接写入文件redata.txt 中,而不是输出到屏幕上。 . 运行命令: python g...
  • kirrin
  • kirrin
  • 2014年03月25日 14:57
  • 526

<<python 核心编程>>第一章 正则表达式

基本使用方法match与searchimport re m = re.match('foo|bar','foo')print(m.group())foo type(m.group())str m.gr...
  • Dylan_Frank
  • Dylan_Frank
  • 2017年07月27日 20:32
  • 183

Python高级编程(二)正则表达式

Python正则表达式正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 r...
  • lzl759552889
  • lzl759552889
  • 2017年04月04日 15:17
  • 85
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Python编程]正则表达式
举报原因:
原因补充:

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