正则表达式快速入门(python示例)

前端之家收集整理的这篇文章主要介绍了正则表达式快速入门(python示例)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

正则表达式的作用我就不赘述了,首先讲解一下单个字符的匹配。

1、‘’.“(点):匹配除了(\n)之外的所有字符。

首先import re,以下的示例都默认已经导入了re包,不再另行说明。

string1 = 'python'
string2 = '012345'
ma1 = re.match(r'.',string1)#r代表匹配元字符串,即正则表达式中的表达为最原始的含义,此时类似\n,不是换行,而是\和n两个字
ma2 = re.match(r'.',string2)
print ma1.group()#结果为p,只匹配第一个字符print ma2.group()#结果为0,只匹配第一个数字
 
 
 
2、‘’[...]‘’(中括号):匹配中括号中的任意字符集。 
 
 
ma = re.match(r'[p]',string1)
print ma.group()#匹配出p
ma = re.match(r'[a-z]',string1)#匹配a到z之间的字符
print ma.group()#p
string3 = 'PYTHON'
ma = re.match(r'[A-Z]',string3)#匹配A到Z之间的字符
print ma.group()#P
ma = re.match(r'[0-9]',string2)#匹配0到9之间的字符
print ma.group()#0
 
ma = re.match(r'[a-zA-Z0-9]',string1)#a-z、A-Z和0-9可组合使用
print ma.group()#p

3、\d 和 \D :匹配数字/非数字
string4 = '[];;:'
ma1 = re.match(r'\D',string4)#匹配非数字
ma2 = re.match(r'\d',string2)#匹配数字
print ma1.group()#[
print ma2.group()#0

4、\s 和 \S 同上,分别匹配空白和非空白字符

5、\w 和 \W 同上,分别匹配单词字符[a-zA-Z0-9]和非单词字符

6、匹配带[ ]的字符集时,需要在正则表达式中加上转义符 \

7、* (星号):匹配0到无穷次
ma = re.match(r'[a-z][a-z]*',string1)#小写字母开头,后接0个或者多个小写字母的字符串
print ma.group()#python

8、+ (星号):匹配1到无穷次
ma = re.match(r'[a-z][a-z]+',string1)#小写字母开头,后接1个或者多个小写字母的字符串
print ma.group()#python
 
9、? (星号):匹配0到1次,即有或无 
 
 
ma = re.match(r'[a-z][a-z]?',string1)#小写字母开头,后接0个或者1个小写字母的字符串
print ma.group()#py

10、{m,n} :匹配出现m到n次的字符串
ma = re.match(r'[\w]{1,4}',string1)任意字母和数字出现1到4次
print ma.group()#pyth

11、*? 和 +? 和 ?? :非贪婪模式匹配,即最少匹配。仅举一例。
ma = re.match(r'[\w][\w]+?',string1)#+最少匹配一次
print ma.group()#py

12、^ 和 $ :分别匹配开始和结束。例如下例,可以成功匹配网易126的邮箱,但是如果string5='alibee@126.comabc'而

没有$符号时,也能匹配成功,但此时的string5不是一个符合规则的网易邮箱账号。

string5 = 'alibee@126.com'
ma = re.match(r'^[\w]{1,6}@126.com$',string5)
print ma.group()#alibee@126.com

13、\A 和 \Z :分别匹配以指定的字符开始和结尾。下例表示以a开头的字符串,\Z的用法还没明白,有明白的朋友请解惑
ma = re.match(r'\Aa[\w]+@126.com',string5)
print ma.group()

14、| :表示或者,下例表示ab或者d都可以匹配
ma = re.match(r'ab|d','d')
print ma.group()

15、() :表示元组,下例表示即可匹配126邮箱,也可以匹配163邮箱
string5 = 'alibee@126.com'
ma = re.match(r'alibee@(126|163).com',string5)
print ma.group()

16、:匹配中文
ma = re.match(r'[\u4e00-\u9fa5] ','安定飞’)</span>

以上基本包含了常用的正则表达式语法,下面简单介绍python中re包的几个方法


1、search(pattern,string,flag):pattern中可以是正则表达式,flag 可以省略,search方法只能查找一个。

ma = re.search(r'[\w]+',string5)
print ma.group()#alibee

2、findall(pattern,string,flag) :找到所有符号pattern的字符串,flag可以省略。
string7 = '1,2,3,4'
ma = re.findall(r'\d+',string7)
print ma #['1','2','3','4']

3、sub(pattern,repl,count,flag):将repl替换成string,repl可以接字符串,也可以是函数返回值。

string8 = '5'#接字符串
ma = re.sub(r'\d+','6',string8)
print ma #6
def addnumber(match) :  #接函数返回值
    num = match.group()
    num = int(num)+1
    return str(num)
ma = re.sub(r'\d+',addnumber,string8)
print ma #6

4、split(pattern,string) :以pattern分割string,返回分割结果组成的列表。
ma = re.split(r',','4']
以上的内容只是粗浅的学习正则表达式,更多用法请参考:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx

猜你在找的正则表达式相关文章