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