码迷,mamicode.com
首页 > 编程语言 > 详细

python基础知识---正则

时间:2016-06-16 20:15:32      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:

一、python正则简介

python的re模块,让python能够支持扩展正则

扩展正则的字符集("."  "[abc]"   "(abc)"  "a|b")、锚点("$"  "^"  "\<\>")、修饰字符("*"  "?"  "+"  "{}")  这里不做介绍

 

二、re模块中的函数,主要是三种匹配(match、search、findall)、一种替换(sub)、一种分割(split)

1,match(apttern,string,flags=0)

flag:标志位,用来控制match的匹配方式,一般都没有指定,默认0

match用来从起始位置开始根据模型去字符串中匹配指定内容,如果没有匹配到内容,会返回None  如果匹配到内容  会返回一个MatchObject的对象

使用group()和groups()方法访问匹配的内容

import re
string="1234erqwe123"

obj=re.match(\d+,string)      #返回一个对象
print(obj)
print(obj.group())     #使用group()方法访问匹配的内容

#<_sre.SRE_Match object; span=(0, 4), match=‘1234‘>
#1234
import re
string="@$1234erqwe123"
obj1=re.match(([^0-9]+)(\d+),string)

print(obj1.group())       #group()返回一个字符串
print(obj1.groups())     #groups()返回一个元组

#@$1234
#(‘@$‘, ‘1234‘)

 

2,search(pattern, string, flags=0)

search和match就一处区别,可以匹配非行首的pattern,也是通过group()和groups()访问匹配到的数据

string="#$1234erqwe123"
obj=re.search((\d+)([^0-9]+),string)

print(obj.group())
print(obj.groups())

#1234erqwe
#(‘1234‘, ‘erqwe‘)

 

3,findall(pattern,string,flags=0)

match和search只能匹配一个pattern ,如果想匹配字符串中所有符合要求的pattern   ,使用findall()

findall函数返回一个列表

import re
string="#$1234erqwe123"
obj=re.findall(\d+,string)       #findall函数返回一个列表
print(obj)

#[‘1234‘, ‘123‘]

 

4,sub(pattern,被替换的部分,string,n=0)

sub用于替换指定的字符串 ,比字符串方法replace功能丰富    

import re
string="1234erqwe123adfa123"
new_string=re.sub(\d+,**,string)          #返回替换后的副本,原字符串不变
new_string2=re.sub(\d+,**,string,2)       #可指定替换前n个pattern,后面的不替换
print(string) 
print(new_string) 
print(new_string2)

#1234erqwe123adfa123
#**erqwe**adfa**
#**erqwe**adfa123

5,split(pattern,string,n)
split用于按指定匹配切割字符串,n表示按前n个pattern分割,如果n为空则表示按所有的pattern切割,返回一个列表

split函数比字符串方法split功能丰富
import re
string="1234erqwe123adfa123"
new_string=re.split(\d+,string,1)       #以前1个pattern为分割符
new_string1=re.split(\d+,string,2)      #以前2个pattern为分割符
new_string2=re.split((\d+),string,1)    #如果pattern中带有括号,括号里面的内容会返回
new_string3=re.split((\d+),string,2)    #
print(new_string)
print(new_string1)
print(new_string2)
print(new_string3)

#[‘‘, ‘erqwe123adfa123‘]
#[‘‘, ‘erqwe‘, ‘adfa123‘]
#[‘‘, ‘1234‘, ‘erqwe123adfa123‘]
#[‘‘, ‘1234‘, ‘erqwe‘, ‘123‘, ‘adfa123‘]

 

python基础知识---正则

标签:

原文地址:http://www.cnblogs.com/zhoufeng1989/p/5591842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!