[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 核心编程>>第一章 正则表达式

基本使用方法match与searchimport re m = re.match('foo|bar','foo')print(m.group())foo type(m.group())str m.gr...

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

#15-1 识别下列字符串:“bat,” “bit,” “but,” “hat,” “hit,” 或 “hut” pattern =  r'[bh][aiu]t,?' #15-2  匹配用...

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

Python正则表达式正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 r...

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

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

Python编程--正则表达式

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

python核心编程作业--正则表达式和图形界面--电影搜索器(电影天堂)

本周学习了多线程,正则和图形界面。下面写一个例子算是作业:电影天堂电影搜索软件:网页爬取解析(正则)和界面编程:#coding:gb2312 import urllib,re,tkMessageBox...

Python核心编程(第十五章)--正则表达式

正则表达式为高级文本模式匹配 [A-Za-z]\w+:第一个字符是字母,由大写字母A~Z或是a~z组成,它后面至少跟有一个(或更多)由字母或数字组成的字符(\w) 搜索和匹配的区别: ...

Python编程基础之十四正则表达式

一、简介        正则表达式(RE)为高级文本模式匹配,以及搜索、替代等功能提供了基础。正则表达式是一些由字符和特殊符号组成的字符串,它们描述了这些字符和字符的某种重复方式,因此能按某种模式匹...

Python编程中常用的12种基础知识,其中肯定有你不会的! 0 1、正则表达式替换 目标: 将字符串line中的 overview.gif 替换成其他字符串 0 2、遍历目录方

原地址:https://yq.aliyun.com/articles/155292?utm_content=m_27408 Python编程中常用的12种基础知识,其中肯定有你不会的! ...
  • lltaoyy
  • lltaoyy
  • 2017年08月03日 16:32
  • 87

Python正则表达式指南.pdf

  • 2017年11月10日 16:29
  • 940KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Python编程]正则表达式
举报原因:
原因补充:

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