博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【学习笔记】Python正则表达式
阅读量:7143 次
发布时间:2019-06-29

本文共 1379 字,大约阅读时间需要 4 分钟。

一、准备知识

\d:匹配一个数字
\w:匹配一个字母
. :匹配任意字符
\s :匹配一个空格

?表示0个或1个字符

+表示至少一个字符
*表示任意个字符(包括0个)
{n}表示n个字符,{n,m}表示n-m个字符

[0-9a-zA-Z_]可以匹配一个数字、字母或者下划线

(P|p)ython可以匹配'Python'或者'python'
^py$只能匹配'py'了

二、在Python中使用

(1)匹配

import re

re.match(r'^\d{3}-\d{3,8}$', '010-12345')
<_sre.SRE_Match object at 0x1026e18b8>
re.match(r'^\d{3}-\d{3,8}$', '010 12345')

match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None

(2)切分字符串

import re

re.split(r'[\s\,\;]+', 'a,b;; c d')
['a', 'b', 'c', 'd']

(3)提取子串

import re

m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
m.group(0)
'010-12345'
m.groups()
('010', '12345')
m.group(1)
'010'
m.group(2)
'12345'
用()表示的就是要提取的分组(Group),group(0)永远是原始字符串,group(1)、group(2)……表示第1、2、……个子串

(4)贪婪匹配

正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符。举例如下,匹配出数字后面的0:

re.match(r'^(\d+)(0)$', '102300').groups()

('102300', '')
由于\d+采用贪婪匹配,直接把后面的0全部匹配了,结果0
只能匹配空字符串了。

必须让\d+采用非贪婪匹配(也就是尽可能少匹配),才能把后面的0匹配出来,加个?就可以让\d+采用非贪婪匹配:

re.match(r'^(\d+?)(0*)$', '102300').groups()

('1023', '00')

(5)编译

先编译-后匹配,提高效率

import re

编译:

re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$')

使用:

re_telephone.match('010-12345').groups()

('010', '12345')
re_telephone.match('010-8086').groups()
('010', '8086')

三、实例

#邮箱匹配
import re

reemail = re.compile(r'^[0-9a-zA-Z][0-9a-zA-Z\.]+\@[0-9a-z]+.(com|cn|org|net)$')

m = re_email.match(email)

if m:

print "OK."
else:
print "You have input a wrong e-mail."

转载于:https://blog.51cto.com/11926720/2057664

你可能感兴趣的文章
资金流学习-广州发展
查看>>
python基础3(元祖、字典、深浅copy、集合、文件处理)
查看>>
正确编写Designated Initializer的几个原则
查看>>
iOS播放动态GIF图片
查看>>
获取版本号
查看>>
使用jdk自带的visualVM监控远程监控was
查看>>
集合视图UICollectionView 介绍及其示例程序
查看>>
JsLint 的安装和使用
查看>>
合并傻子//区间dp
查看>>
让IE和Chrome都以隐身模式启动
查看>>
MyPython-->进阶篇-->类
查看>>
unity remote 连接设置
查看>>
2018 NOIP备战计划
查看>>
教你如何迅速秒杀掉:99%的海量数据处理面试题
查看>>
zw版【转发·台湾nvp系列Delphi例程】HALCON InpaintingCt2
查看>>
POJ2155 Matrix
查看>>
字符串匹配算法
查看>>
Eclipse 问题整理
查看>>
Java常用工具类之RegexpUtils,正则表达式工具类
查看>>
c# 利用反射 从json字符串 动态创建类的实例 并动态为实例成员赋值
查看>>