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
- Python_08
- Elasticsearch(三)【.Net客户端API规范--生命周期】
- C++:面向行的类成员函数
- pwd命令
- HTML5中的Range对象的研究
- synchronized二三事1
- Python_08
- Java初认识
- Android插件—Android Drawable Importer
- linux 中大部分命令是如何工作的
- 报错:指定的架构无效.所有 SSDL 项目都必须以同一提供程序为目标。ProviderManifestToken“2012”不同于以前遇到的“2005”。
- 回文数字
- 非搜索二叉树的最近公共祖先
- IO高级应用-BufferedReader
- 设计模式/面向对象