原文地址:http://www.bugingcode.com/blog/python_re_extraction_key.html

关于python的正则使用在以前的文章中 http://www.bugingcode.com/blog/python_regular_expressions.html ,都有介绍,但是这边文章比较大,内容讲的不够细,这里专门讲如何用python正则匹配到自己需要的字符串。

正则提取数据

还是以url字符串来进行匹配:http://www.bugingcode.com/blog/python_regular_expressions.html,url的字符串有明显的一样,bugingcode 为域名,blog 为目录名,python_regular_expressions 为文章的名称。在这里需要把这三个字符串都提取出来。

贪婪和非贪婪匹配

查看正则匹配规则:

. : 匹配任意除换行符"\n"外的字符

+ : 匹配前面字符1次到无限次

在我们可以用/ 来对提取的字符进行限制,也就是卡死头和尾,看看会得到什么样的结果。

import re
str = "http://www.bugingcode.com/blog/python_regular_expressions.html"
print re.findall(r"/(.+)/",str)

会输出什么样的结果呢?

有人猜结果:

['/www.bugingcode.com','blog']

不可能出现这种结果的,因为r"/(.+)/"中已经把/ 用掉了,往下匹配已经找不到/ 号了。

有人猜结果:

['/www.bugingcode.com']

也有人猜:

['/www.bugingcode.com/blog']

这是关于正则表达式的贪婪和非贪婪匹配,简单的记住正则匹配中有出现 ? 才是 非贪婪匹配,这里的正则匹配是贪婪的,也就是最大的匹配情况,一般来说我们选用的是非贪婪 模式。

import re
str = "http://www.bugingcode.com/blog/python_regular_expressions.html"
print re.findall(r"//(.+?)/",str)

匹配的结果为:

['www.bugingcode.com']

提取所有需要的字段

刚才说了一个(.+?) 只能匹配到一个字符串,而我们需要提取 三个字段:bugingcode 为域名,blog 为目录名,python_regular_expressions

import re

str = "http://www.bugingcode.com/blog/python_regular_expressions.html"
print re.findall(r"www.(.+?).com/(.+?)/(.+?).html", str)

输出如下我们需要的结果:

[('bugingcode', 'blog', 'python_regular_expressions')]

再来一个看看是什么结果:

import re

str = "http://www.bugingcode.com/blog/python_regular_expressions.htmlhttp://www.bugingcode.com/blog/python_regular_expressions.html"
print re.findall(r"www.(.+?).com/(.+?)/(.+?).html", str)

有的时候需要提取的字符串比较复杂是,可以通过不断的进行尝试,先把条件放的比较苛刻,后面在慢慢的放开,找到自己需要的字符串。

转载请标明来之:http://www.bugingcode.com/

更多教程:阿猫学编程

正则提取关键字符-python代码实现的更多相关文章

  1. python中的关键字符

    from keyword import kwlistprint(kwlist)for i in kwlist: print(i) 可以显示所有的关键字符,开发者不要重新赋予其他值. a = 10000 ...

  2. python+正则提取+ip代理爬取糗事百科文字信息

    很多网站都有反爬措施,最常见的就是封ip,请求次数过多服务器会拒绝连接,如图: 在程序中设置一个代理ip,可有效的解决这种问题,代码如下: # 需要的库 import requests import ...

  3. Python正则提取数据单引号内数据,并判断是否是空列表(是否提取到数据)

    #coding=utf- import re string1="asdfgh'355'dfsfas" string2="fafafasfasdfasdf" pa ...

  4. 字符编码和Python代码操作文件

    字符编码和Python代码操作文件 读写模式之a模式 # a模式 只追加模式 # 路径不存在:自动创建 with open(r'a.txt','a',encoding='utf8') as f: pa ...

  5. 员工管理系统+字符编码+Python代码文件操作

    员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1  debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ...

  6. 使用Python提取中文字符

    #功能:国际化测试,用于提取应用设计包中的中文字符,并输出report#解压---筛选---整理路径---提取中文---输出报告 ################################### ...

  7. Python 代码实现模糊查询

    Python 代码实现模糊查询 1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列 ...

  8. Python代码样例列表

    扫描左上角二维码,关注公众账号 数字货币量化投资,回复“1279”,获取以下600个Python经典例子源码 ├─algorithm│       Python用户推荐系统曼哈顿算法实现.py│    ...

  9. 10 行 Python 代码实现模糊查询/智能提示

    10 行 Python 代码实现模糊查询/智能提示   1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的 ...

随机推荐

  1. 使用hexo+GitHub搭建个人博客的心得(含教程)

    Author Email Yaoyao Liu yaoyaoliu@msn.com 前言 对于广大CS专业的学生和码农,找一个地方写博客,记录一些编程.配置环境.阅读论文的心得体会是一个很常见的习惯. ...

  2. tensorflow slim训练以及到安卓部署教程

    https://blog.csdn.net/chenyuping333/article/details/81537551 https://blog.csdn.net/u012328159/articl ...

  3. [转载]markown语法

    目录 Cmd Markdown 公式指导手册 一.公式使用参考 1.如何插入公式 2.如何输入上下标 3.如何输入括号和分隔符 4.如何输入分数 5.如何输入开方 6.如何输入省略号 7.如何输入矢量 ...

  4. 解决IntelliJ IDEA Community 社区版 启动Tomcat插件 "Smart Tomcat" NullPointerException 空指针异常

    IntelliJ IDEA Community社区版默认是没有Ultimate版的Tomcat Server,这时候就可以使用插件"Smart Tomcat"; 在"Ru ...

  5. Android开发学习1----AndroidStudio的安装、创建第一个Android Studio文件、Android Studio界面介绍和HelloWord!

    移动开发的工具有很多:Android Studio,eclipse,Hbuilder等,其中,现如今最火的开发工具是Android Studio,Android Studio是谷歌自己推出的一款集成开 ...

  6. collection-time-os-sys-json模块

    一.collections模块 美 [kə'lekʃənz] ,收集,收藏 在内置数据(dict  list  set  tuple)的基础上,collections模块海提供了几个常用的数据类型:c ...

  7. Uber坚持不盈利,葫芦里到底卖的是什么药?

    近日,据媒体报道在美国科罗拉多州阿斯彭举办的<财富>科技头脑风暴大会上,Uber CEO达拉·科斯罗萨西表示,Uber无需在2019年下半年上市计划实施前保持盈利状态. 首先要明确一点的是 ...

  8. 类似postman插件

    Talend API Tester - Free Edition https://chrome.google.com/webstore/detail/talend-api-tester-free-ed ...

  9. 通过 WMI 返回硬盘序列号的一点小问题

    通过 SELECT * FROM Win32_PhysicalMedia 可以返回硬盘序列号,但是在实际使用中某些情况下(原因未知)返回的 SerialNumber 是实际硬盘序列号的字符串按字符Ur ...

  10. 让Spring不再难懂-mvc篇

    spring mvc简介与运行原理 Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servlet会把请求分发给各个处理器,并支持可配置的处理器 ...