Python正则表达式 学习笔记

python第一个正则表达式

1. import re : python正则表达式模块

2. 第一个正则表达式

re.compile(r‘imooc‘)

pattern.match(‘imooc python‘)

示例:

import re

pa = re.compile(r‘imooc‘) #返回一个Pattern类型对象pa

ma = pa.match(‘imooc python‘) #返回一个match对象ma

print ma.group() #获得匹配结果

print ma.span() #获得匹配区间

print ma.string #匹配字符串

print ma.re #pattern对象

pa = re.compile(r‘imooc‘, re.I)    # I == ignore,忽略大小写地匹配

ma = pa.match(‘iMoOc python‘)

print ma.group()

pa = re.compile(r‘(imooc)‘) #加入小括号,放到group里

ma = pa.match(‘imooc python‘)

print ma.groups()

ma = re.match(r‘imooc‘, ‘imooc python‘) #直接匹配

print ma.group()

Python正则表达式语法


字符

匹配

.

匹配任意字符(除了\n)

[...]

匹配字符集
\d / \D
匹配数字/非数字

\s / \S

匹配空白/非空白字符

\w / \W
匹配单词字符[a-zA-Z0-9]/非单词字符

单字符匹配示例:

import re

ma = re.match(r‘.‘, ‘abc0‘)

print ma.group()

ma = re.match(r‘{[abc]}‘, ‘{b}‘)

print ma.group()

ma = re.match(r‘[a-z]‘, ‘a‘)

print ma.group()

ma = re.match(r‘\[[\w]\]‘, ‘[a]‘)

print ma.group()


字符

匹配

*

匹配前一个字符0次或无限次

+

匹配前一个字符1次或无限次

?

匹配前一个字符0次或1次

{m} / {m.n}

匹配前一个字符m次到n次

*? / +? / ??

匹配模式变为非贪婪(尽可能少匹配字符)

示例:

# -*- coding: utf-8 -*-

import re

ma = re.match(r‘[A-Z][a-z]*‘, ‘Aa‘)

print ma.group()

ma = re.match(r‘[_a-zA-z]+[_\w]*‘, ‘_helloWorld01‘) #匹配一个变量名

print ma.group()

ma = re.match(r‘[0-9]?[0-9]‘, ‘28‘) #匹配0到99

print ma.group()

边界匹配


字符

匹配

^

匹配字符串开头

$

匹配字符串结尾

\A / \Z

指定的字符串必须穿现在开头/结尾

示例:

import re

ma = re.match(r‘^[\w]{4,10}@163.com$‘, ‘[email protected]‘)

print ma.group()

ma = re.match(r‘\Aimooc[\w]*‘, ‘imooc python‘)

print ma.group()

分组匹配


字符

匹配

|

匹配左右任意一个表达式

(ab)

括号表达式作为一个分组

\<number>

引用编号为num的分组匹配到的字符串

(?P<name>)

分组起一个别名

(?P=name)
引用别名为name的分组匹配字符串

示例:

# -*- coding: utf-8 -*-

import re

ma = re.match(r‘[0-9]?\d$|100‘, ‘100‘) #匹配0到100

print ma.group()

ma = re.match(r‘[\w]{4,6}@(163|126).com‘, ‘[email protected]‘)

print ma.group()

ma = re.match(r‘<([\w]+>)\1‘, ‘<book>book>‘)

print ma.group()

ma = re.match(r‘<([\w]+>)[\w]+</\1‘, ‘<book>python</book>‘) #

print ma.group()

ma = re.match(r‘<(?P<mark>[\w]+>)[\w]+</(?P=mark)‘, ‘<book>python</book>‘)

print ma.group()

re模块的其他方法

1:search(pattern, string, flags=0)

在一个字符串中查找匹配

2:findall(pattern, string, flags=0)

找到匹配,返回所有匹配部分的列表

3:sub(pattern, repl, string, count, flags=0)

将字符串中匹配正则表达式的部分替换为其他值

4:split(pattern, string, maxsplit=0, flags=0)

根据匹配分割字符串,返回分割字符串组成的列表

示例:

import re

pa = re.compile(‘<[\w]+>‘)

ma = re.search(pa, ‘<a><b><c><d><efg>h<i>‘)

print ma.group()

pa = re.compile(‘<[\w]+>‘)

L = re.findall(pa, ‘<a><b><c><d><efg>h<i>‘)

print L

s = re.sub(r‘\d+‘, ‘2016‘, ‘I was born in 1993‘)

print s

def add1(match):        # repl位函数的sub函数

val = match.group()

num = int(val)+1

return str(num)

s = re.sub(r‘\d+‘, add1, ‘I was born in 1993, you are born in 1992‘)

print s

l = re.split(r‘:| |,‘, ‘imooc:C C++ Java Python,C#‘)

print l

练习

抓取网页中的图片到本地

1:抓取网页

2:抓取图片地址

3:抓取图片内容并把存到本地

时间: 2024-10-23 10:28:31

Python正则表达式 学习笔记的相关文章

python 正则表达式 学习笔记(不断补充ing)

正则表达式是可以匹配文本片段的模式. 1.常用通配符 符号     说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 2.特殊字符进行转义 如果在正则表达式中想要把特殊字符(如上面的常用通配符)作为普通字符使用,就使用\对它们进行转义.在python的re模块中,需要用\\进行转义:如果不使用双斜线,可以使用原始字符串,这时只要用一个\即可,例如r'python

python 正则表达式 学习笔记(不断补充中)

正则表达式是可以匹配文本片段的模式. 1.常用通配符 .     匹配任意字符(除换行符) \w   匹配字母或数字或下划线或汉字 \s    匹配任意的空白符 \d    匹配 . 匹配任意字符(除换行符) \w  匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或者结束 ^ 匹配字符串的开始 $ 匹配字符串结束    

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

Python Click 学习笔记(转)

原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发的一个小工具需要在命令行环境下操作,就写个学习笔记. 国际惯例,先来一段 "Hello World" 程序(假定已经安装了 Click 包). # hello.py import click @click.command() @click.option('--count', default

[简明python教程]学习笔记之编写简单备份脚本

[[email protected] 0503]# cat backup_ver3.py #!/usr/bin/python #filename:backup_ver3.py import os import time #source source=['/root/a.sh','/root/b.sh','/root/c.sh'] #source='/root/c.sh' #backup dir target_dir='/tmp/' today=target_dir+time.strftime('

Python正则表达式学习摘要及资料

摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2,4}? 只匹配 2 个 a. ^表示行的开头,^\d表示必须以数字开头. $表示行的结束,\d$表示必须以数字结束. 你可能注意到了,py也可以匹配'python'-->py;但是加上^py$就变成了整行匹配,就只能匹配'py'了,匹配'python'时,就什么也得不到. 参考表 正则表达式特殊序

3. 蛤蟆Python脚本学习笔记三字符串

3. 蛤蟆Python脚本学习笔记三字符串 本篇名言:"平静的湖面只有呆板的倒映,奔腾的激流才有美丽的浪花!幸福不是靠别人来布施,而是要自己去赢取!生命的意义在不断挑战自己,战胜自己!" 这个本来放在昨天的,由于昨晚又太晚了,所以就搁在这里了.赶紧看看吧. 字符串两边都用双引号或者单引号包起来.否则就使用转移符号来转移一下. 输入在一起可以直接拼接. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48112507

1.蛤蟆Python脚本学习笔记一环境搭建

1.蛤蟆Python脚本学习笔记一环境搭建 蛤蟆一直在想在工作的时候能不能有一个牛逼的工具来让自己工作更加轻松和快乐.用过C, C++, C#, JAVA,  SHELL,TCL,汇编,BAT等,感觉这些都是需要的时候能发挥作用,不能和我想象的一样.突然有一天,感觉Python实在不错,那么就和小伙伴们一起乐呵乐呵呗.万事开头难,我们先来搭建环境吧. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48058315 1. 相关

[简明python教程]学习笔记2014-05-05

今天学习了python的输入输出.异常处理和python标准库 1.文件 通过创建一个file类的对象去处理文件,方法有read.readline.write.close等 [[email protected] 0505]# cat using_file.py #!/usr/bin/python #filename:using_file.py poem='''Programing is fun when the work is done use Python! ''' f=file('poem.