您的位置:首页 > 编程语言 > Python开发

Python 模块学习:re模块

2016-08-04 22:11 225 查看
今天学习了Python中有关正则表达式的知识。关于正则表达式的语法,不作过多解释,网上有许多学习的资料。这里主要介绍Python中常用的正则表达式处理函数。

方法/属性作用
match()决定 RE 是否在字符串刚开始的位置匹配
search()扫描字符串,找到这个 RE 匹配的位置
findall()找到 RE 匹配的所有子串,并把它们作为一个列表返回
finditer()找到 RE 匹配的所有子串,并把它们作为一个迭代器返回
match() 函数只检查 RE 是否在字符串开始处匹配,而 search() 则是扫描整个字符串。

match() 只报告一次成功的匹配,它将从 0 处开始;如果匹配不是从 0 开始的,match() 将不会报告它。

search() 将扫描整个字符串,并报告它找到的第一个匹配。

match()、seerch()、finditer()如果匹配成功则返回一个Match Object对象,该对象有以下属性、方法:

方法/属性作用
group()返回被 RE 匹配的字符串
start()返回匹配开始的位置
end()返回匹配结束的位置
span()返回一个元组包含匹配 (开始,结束) 的位置
group() 返回re整体匹配的字符串,可以一次输入多个组号,对应组号匹配的字符串。

1. group()返回re整体匹配的字符串,

2. group (n,m) 返回组号为n,m所匹配的字符串,如果组号不存在,则返回indexError异常

#!python

>>> p = re.compile('(a(b)c)d')

>>> m = p.match('abcd')

>>> m.group(0)

'abcd'

>>> m.group(1)

'abc'

>>> m.group(2)

'b'


groups() 方法返回一个包含正则表达式中所有小组字符串的元组,从 1 到 所含的小组号,通常groups()不需要参数,返回一个元组,元组中的元就是正则表达式中定义的组。


#!python

>>> p = re.compile('(a(b)c)d')

>>> m = p.match('abcd')

>>> m.groups()

('abc', 'b')


使用索引取得相应的组内容,例如:m.groups()[0]

p2=re.compile(r'''(\d)+\w''',re.X)

>>> p2.match('123a b12123c').group() # re正则表达式 '(\d)+\w匹配的字符串

'123a'

>>> p2.match('123a b12123c').group(0)

'123a'

>>> p2.match('123a b12123c').group(1) #返回正则表达式中第一个小组即(\d)所匹配的字符串

'3'

>>> p2.match('123a b12 123c').groups()
('3',)


re.match ,从字符串开头匹配,返回一个Match Object,或None

  re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词。

import re
text = "JGood is a handsome boy, he is cool, clever, and so on..."
regex = re.compile(r'\w*oo\w*')
print regex.findall(text)   #查找所有包含'oo'的单词
print regex.sub(lambda m: '[' + m.group(0) + ']', text) #将字符串中含有'oo'的单词用[]括起来。


转自:http://www.python8.org/a/fenleiwenzhang/yuyanjichu/2009/0901/150.html

顶0踩
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: