Python_08

来源:互联网 发布:淘宝付邮试用中心入口 编辑:程序博客网 时间:2024/06/07 02:43

转自:http://www.cnblogs.com/chuxiuhong/p/5885073.html

Python正则表达式

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串

eg.

一个网页的HTML源码。其中有一段

<html><body><h1>hello world<h1></body></html>

你想要把这个hello world提取出来,但你这时如果只会python 的字符串处理,那么第一反应可能是

s = <html><body><h1>hello world<h1></body></html>start_index = s.find('<h1>')

然后从这个位置向下查找到下一个<h1>出现这样做未尝不可,但是很麻烦不是吗。需要考虑多个标签,一不留神就多匹配到东西了,而如果想要非常准确的匹配到,又得多加循环判断,效率太低。

这时候,正则表达式就是首选的帮手。

import rekey = r"<html><body><h1>hello world<h1></body></html>"#这段是你要匹配的文本p1 = r"(?<=<h1>).+?(?=<h1>)"#这是我们写的正则表达式规则,你现在可以不理解啥意思pattern1 = re.compile(p1)#我们在编译这段正则表达式matcher1 = re.search(pattern1,key)#在源文本中搜索符合正则表达式的部分print(matcher1.group(0))
#.在正则表达式中代表着可以代表的任何一个字符,包括它本身#+的作用是蒋前面一个字符或一个子表达式重复一遍或者多遍#*跟在其他符号后面表达可以匹配到它0次或多次#[]代表匹配里面的字符中的任何一个#[^]代表除了内部包含的字符以外都能匹配import rekey = r"assdasssdasd.id89s"p1 = r"a.*"p2 = r"as{1,2}d"pattern1 = re.compile(p1)pattern2 = re.compile(p2)print(pattern1.findall(key))#findall:返回所有符合要求的元素列表print(pattern2.findall(key))#findall:返回所有符合要求的元素列表 



0 0