正则表达式(二)
一、re模块主要方法
在Python中主要使用re模块来实现正则表达式的操作,具体使用时,既可以直接使用re模块的函数进行字符串处理,也可以将模块编译为正则表达式对象,然后使用正则表达式对象的方法来操作字符串。
二、直接使用re模块方法
>> > import re
>> > text = 'alpha. beta....gamma delta'
>> > re. split( '[\. ]+' , text)
>> > re. split( '[\. ]+' , text, maxsplit= 2 )
[ 'alpha' , 'beta' , 'gamma' , 'delta' ]
[ 'alpha' , 'beta' , 'gamma delta' ]
三、使用正则表达式对象
(一)
首先使用re模块的compile()方法
将正则表达式编译生成正则表达式对象,然后再使用正则表达式对象提供的方法进行字符串处理。 使用编译后的正则表达式对象可以提高字符串处理速度,也提供了更强大的文本处理功能
。 正则表达式对象的match(string[, pos[, endpos]])方法用于在字符串开头或指定位置进行搜索,模式必须
出现在字符串开头或指定位置; 正则表达式对象的search(string[, pos[, endpos]])方法用于在整个字符串
中进行搜索; 正则表达式对象的findall(string[, pos[, endpos]])方法用于在字符串中查找所有符合正则表达式的字符串并返回列表。
(二)match()、search()、findall()
match(string[, pos[, endpos]])方法在字符串开头或指定位置 进行搜索,模式必须
出现在字符串开头或指定位置; search(string[, pos[, endpos]])方法在整个字符串或指定范围 中进行搜索; findall(string[, pos[, endpos]])方法在字符串指定范围中 查找所有符合正则表达式的字符串并以列表
形式返回。
>> > import re
>> > example = 'ShanDong Institute of Business and Technology'
>> > pattern = re. compile ( r'\bB\w+\b' )
>> > pattern. findall( example)
>> > pattern = re. compile ( r'\b[a-zA-Z]{3}\b' )
>> > pattern. findall( example)
[ 'Business' ]
[ 'and' ]
(三)sub()、subn()
正则表达式对象的sub(repl, string[, count = 0])和subn(repl, string[, count = 0])方法用来实现字符串替换功能,其中参数repl可以为字符串或返回字符串的可调用对象
(四)字符串分隔
正则表达式对象的split(string[, maxsplit = 0])方法用来实现字符串分隔
>> > example = r'one,two,three.four/five\six?seven[eight]nine|ten'
>> > pattern = re. compile ( r'[,./\\?[\]\|]' )
>> > pattern. split( example)
[ 'one' , 'two' , 'three' , 'four' , 'five' , 'six' , 'seven' , 'eight' , 'nine' , 'ten' ]
四、子模式与match对象
使用()表示一个子模式,括号中的内容作为一个整体处理,例如’(red)+’可以匹配’redred’、’redredred‘等多个重复’red’的情况。
>> > pattern = re. compile ( r'(\d{3,4})-(\d{7,8})' )
>> > pattern. findall( telNumber)
[ ( '0535' , '1234567' ) , ( '010' , '12345678' ) , ( '025' , '87654321' ) ]
正则表达式对象的match方法和search方法匹配成功后返回match对象。match对象的主要方法有: group():返回匹配的一个或多个子模式内容 groups():返回一个包含匹配的所有子模式内容的元组 groupdict():返回包含匹配的所有命名子模式内容的字典 start():返回指定子模式内容的起始位置 end():返回指定子模式内容的结束位置的前一个位置 span():返回一个包含指定子模式内容起始位置和结束位置前一个位置的元组。