原文地址: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. 2.Jenkins结合k8s完成Jenkins slave功能

    1.构建镜像 下载基础镜像,这里使用openvz的包,下载地址为:https://wiki.openvz.org/Download/template/precreated,下载centos7的镜像 下 ...

  2. Python筛法求素数

    l=[2]m,n=input().split()m=int(m)n=int(n) for i in range(m,n): flag=True for j in l: if i%j==0:#如果当前值 ...

  3. endnote插入|管理文件|成组

    信息检索 Endnote Filter(导入)---library(管理)---style(导出) 本地+网络数据库 点击research 在WOS上: 导入改文献: CNKI 导入PDF时选择PDF ...

  4. console.log和alert的区别

    alert是同步的,如果不关闭弹出框,js代码就不会继续执行下去,这时候浏览器啥都干不了. console.log不会打断js的执行. 当要输出几十几百条信息的时候还是得用console.log,而且 ...

  5. github新手使用教程

    1.首先打开https://github.com/官网 注册一个github账号 2.注册成功之后,登录账号,创建一个属于自己的库 3.创建完成之后,为了方便电脑上的代码上传到github 仓库上,要 ...

  6. BTree

    hash.平衡二叉树.BTree.B+tree的区别 https://blog.csdn.net/qq_40673786/article/details/90082444 联合索引在B+树上的结构介绍 ...

  7. Utf8BomRemover

    // // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler ...

  8. Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionExcep linux下mysql修改连接超时wait_timeout修改后就ok了

    Linux下mysql修改连接超时wait_timeout 1,首先: show variables like '%timeout%': 显示结果: +------------------------ ...

  9. 系统学习Javaweb6----JavaScript2

    感想:感觉自己还是只是学到皮毛,仍需继续努力,明天开始需要学习Android和阅读感想的书写. 学习笔记: 2.3.运算符 JavaScript运算符与java运算符基本一致. 这里我们来寻找不同点进 ...

  10. reviewer回信

    收到reviewer回信之后的情况 Peer review其实是一个CA(质检)过程.文章投稿后的几种状态:Reject.resubmit和revise-and-resubmit. 收到回信之后,re ...