python正则表达式简要说明

正则表达式:

一、定义:是一个特殊的字符序列,它能方便地检查一个字符串是否与某种模式匹配。

二、作用:正则表达式为高级文本模式匹配,以及文本的检索与替换等功能提供了基础。

三、正则表达式中常用的字符含义:

 

python正则表达式简要说明

python正则表达式简要说明

python正则表达式简要说明

python正则表达式简要说明

python正则表达式简要说明

四、re模块中常用功能函数:

1.compile():

须知:当我们在Python中使用正则表达式时,re模块内部会干两件事情:编译正则表达式,如果正则表达式的字符串本身不合法,会报错;用编译后的正则表达式去匹配字符串。

(1)compile()作用:当一个正则表达式要重复使用很多次,出于效率的考虑,我们可以预编译该正则表达式,接下来重复使用时就不需要编译这个步骤了,直接匹配.

(2)格式:re.compile(pattern,flags=0)

pattern: 编译时用的表达式字符串。

flags :编译标志位,用于修改正则表达式的匹配方式,如:是否区分大小写,多行匹配等,可有可无,按需添加。常用的flags有

标志

含义

re.S(DOTALL)

使.匹配包括换行在内的所有字符

re.I(IGNORECASE)

使匹配对大小写不敏感

re.L(LOCALE)

做本地化识别(locale-aware)匹配,法语等

re.M(MULTILINE)

多行匹配,影响^和$

re.X(VERBOSE)

该标志通过给予更灵活的格式以便将正则表达式写得更易于理解

re.U

根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B

eg.  import re

s1 = "Tina is a good girl, she is cool, clever, and so on..."

s2 = "Too young too simple"

rr = re.compile(r'\w*oo\w*')

print(rr.findall(s1))   #查找所有包含'oo'的单词

print(rr.findall(s2))   #查找所有包含'oo'的单词

执行结果如下:

['good', 'cool']

['Too', 'too']

2.match():

(1)尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

:re.search会在给定字符串中寻找第一个匹配给定正则表达式的子字符串。

(2)re.match(pattern, string, flags=0)

参数

描述

pattern

匹配的正则表达式

string

要匹配的字符串。

flags

标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式

匹配对象方法

描述

group(num=0)

匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。

groups()

返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

 

3.re.search()   

(1)扫描整个字符串并返回第一个成功的匹配。

语法:re.search(pattern, string, flags=0)

(2)与re.match()非常相似,但re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;re.search匹配整个字符串,直到找到一个匹配

4.re.sub()

(1)re.sub(pattern, repl, string, count=0, flags=0)

(2)eg.

import re

phone = "2004-959-559 # 这是一个国外电话号码"

# 删除字符串中的 Python注释

num = re.sub(r'#.*$', "", phone)

print "电话号码是: ", num

5.re.findall()

(1)re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。

6.re.split()

(1)按照能够匹配的子串将string分割后返回列表。

(2)eg.

import re

print(re.split('\d+','one1two2three3four4five'))

执行结果如下:

['one', 'two', 'three', 'four', 'five']

 

如果想更详细地学习正则表达式,大家可以参考以下网址:

http://www.cnblogs.com/tina-python/p/5508402.html

https://www.cnblogs.com/chuxiuhong/p/5885073.html

http://www.cnblogs.com/chuxiuhong/p/5907484.html