学习Python的re模块学习
来源:互联网 发布:达内java培训班有用吗 编辑:程序博客网 时间:2024/05/16 12:36
Python的re模块适用于正则表达式的匹配操作,在Python爬虫中可以匹配到一些自己想要得到的网站信息,对于爬虫编程十分重要。
现在,我们先说一说正则表达式的操作元字符:
\正则表达式使用反斜杠" \ "来代表特殊形式或用作转义字符,这里跟Python的语法冲突,因此,Python用" \\\\ "表示正则表达式中的" \ ",因为正则表达式中如果要匹配" \ ",需要用\来转义,变成" \\ ",而Python语法中又需要对字符串中每一个\进行转义,所以就变成了" \\\\ "。^匹配输入字符串的开始位置。$匹配输入字符串的结束位置。*匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。+匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。?匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。{n}n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。{n,}n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。{n,m}m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。?当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。.点匹配除“\n”之外的任何单个字符。x|y匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。[xyz]字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。[^xyz]负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。[a-z]字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。[^a-z]负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。\d匹配一个数字字符。等价于[0-9]。\D匹配一个非数字字符。等价于[^0-9]。\n匹配一个换行符。等价于\x0a和\cJ。\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。\S匹配任何非空白字符。等价于[^ \f\n\r\t\v]。\w匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。\W匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。\num匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。\n标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
re模块函数:
1、 re.match(pattern,string,flags)
match() 函数只检查 RE 是否在字符串开始处匹配,而 search() 则是扫描整个字符串。
match() 只报告一次成功的匹配,它将从 0 处开始;如果匹配不是从 0 开始的,match() 将不会报告它。
匹配成功则返回一个Match Object对象
对于输出对象的处理,有一下方法和属性:
group()返回被 RE 匹配的字符串start()返回匹配开始的位置end()返回匹配结束的位置span()返回一个元组包含匹配 (开始,结束) 的位置***:group() 返回re整体匹配的字符串,可以一次输入多个组号,对应组号匹配的字符串。
1. group()返回re整体匹配的字符串
2. group (n,m) 返回组号为n,m所匹配的字符串,如果组号不存在,则返回indexError异常
面给出几个例子对match提供的一些方法加以解释,代码如下
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
运行结果:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
结果分析:
1.string是匹配时所用的文本
2.start可以返回指定的组在字符串中开始匹配的位置,默认值为0
3.end返回指定的组在字符串中开始匹配的位置,默认值为0
4.pos,endpos用于返回起始和终止匹配位置
5.group可以返回指定组的起始匹配位置
6.groupdict返回有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。
7.lastgroup返回最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。
8.lastindex返回最后一个分组在文本中的索引
9.span 返回(start(group), end(group)),即该组的起始和终止位置
10.expand可以实现分组之间顺序的调整
2、 re.search(pattern,string,flags)
功能:在字符串内查找匹配,找到第一个匹配,返回Match Object,或None
下面一个例子将字符串中的空格 ' ' 替换成 '-' :
import re
text = "JGood is a handsome boy, he is cool, clever, and so on..."
print re.sub(r'\s+', '-', text)
re.sub的函数原型为:re.sub(pattern, repl, string, count)
其中第二个函数是替换后的字符串;本例中为'-'
第四个参数指替换个数。默认为0,表示每个匹配项都替换。
text ="JGood is a handsome boy, he is cool, clever, and so on..."
regex = re.compile(r'\w*oo\w*')
print regex.findall(text)#查找所有包含'oo'的单词
print regex.sub(lambda m: '['+ m.group(0)+']', text) #将字符串中含有'oo'的单词用[]括起来。
- python re模块的学习
- 学习Python的re模块学习
- Python的re模块学习---正则表达式
- python中的re模块学习
- python学习之re模块
- Python学习之re模块
- 【Python学习】Python的re模块和正则表达式
- Python的re(正则表达式)模块学习笔记
- Python 之 【re模块的正则表达式学习】
- Python模块学习 ---- re 正则表达式
- Python中re(正则表达式)模块学习
- Python模块学习 ---- re 正则表达式
- Python中re(正则表达式)模块学习
- Python模块学习 – re 正则表达式
- Python中re(正则表达式)模块学习
- Python中re(正则表达式)模块学习
- Python中re(正则表达式)模块学习
- Python学习笔记--正则表达式,re模块
- [模板] exgcd模板解不定方程
- Mac串口助手源代码详解(下)
- HTTP协议详解(经典整理)
- linux基础操作命令(2)
- unity UGUI与模型混合显示(ui显示特效)
- 学习Python的re模块学习
- javascript高精度计算解决方案
- Subsequence
- 文件下载或者预览(download)
- 1098: 树状数组2(破坏公路)
- overlay文件系统解析
- elasticsearch liux启动,nohup command > syslog.log 2>&1 &
- MOOC清华《VC++面向对象与可视化程序设计》第3章:编程作业-艺术字的显示
- Linux Tomcat 启动卡住