【学习笔记】Python正则表达式
2018-01-05 11:13
801 查看
一、准备知识
\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
('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."
\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."
相关文章推荐
- python 正则表达式 学习笔记(不断补充ing)
- python正则表达式学习 笔记
- python学习笔记-正则表达式提取指定关键字
- Python学习笔记(四):面向对象、正则表达式(快速入门篇)
- 学习笔记23-Python正则表达式
- <Python高级全栈开发工程师-1>学习过程笔记【181-184】正则表达式 <特殊字符><函数>
- Python基础教程 正则表达式 学习笔记
- python 学习笔记day09-pythonz正则表达式、socket模块
- python网络爬虫学习笔记之之正则表达式
- Python学习笔记<正则表达式与python>
- 【学习笔记】Python中的正则表达式re
- Python学习笔记 第二部分 - 正则表达式 与 爬虫小实例(抓取豆瓣电影中评分大于等于8分的影片)
- Python学习笔记:正则表达式
- python基础学习笔记(三) 文件、time和正则表达式
- Python 爬虫学习笔记之正则表达式
- Python学习笔记6-Python中re(正则表达式)模块学习
- 37 Python 正则表达式学习笔记
- Python学习笔记57(正则表达式)
- Python学习笔记8:标准库之正则表达式
- Python之学习笔记(正则表达式)