python正则

Python正则表达式,这一篇就够了!

三世轮回 提交于 2020-04-02 00:12:45
大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习 Python中关于 正则表达式的函数。 re模块主要定义了9个常量、12个函数、1个异常,每个常量和函数猪哥 都会通过实际代码案例讲解,让大家能更直观的了解其作用! 注:为避免出现代码格式错乱,猪哥尽量使用代码截图演示哦。 一、re模块简介 聊到Python正则表达式的支持,首先肯定会想到 re 库,这是一个Python处理文本的 标准库 。 标准库 的意思表示这是一个 Python内置模块 ,不需要额外下载,目前Python内置模块大概有300个。可以在这里查看Python所有的内置模块:https://docs.python.org/3/py-modindex.html#cap-r 因为re是内置模块,所以不需要再下载,使用时直接引入即可: import re re模块官方文档:https://docs.python.org/zh-cn/3.8/library/re.html re模块库源码:https://github.com/python/cpython/blob/3.8/Lib/re.py 二、re模块常量 常量即表示不可更改的变量,一般用于做标记。 re模块中有9个常量,常量的值都是int类型! 上图我们可以看到,所有的常量都是在

python 正则re模块

有些话、适合烂在心里 提交于 2020-03-26 07:44:32
re.match   re.match 尝试从 字符串的开始 匹配一个模式,如:下面的例子匹配第一个单词。 import re text = "JGood is a handsome boy, he is cool, clever, and so on..." m = re.match(r"(\w+)\s", text) if m: print m.group(0), '\n', m.group(1) else: print 'not match' re.match的函数原型为:re.match(pattern, string, flags) 第一个参数是正则表达式,这里为"(\w+)\s",如果匹配成功,则返回一个Match,否则返回一个None; 第二个参数表示要匹配的字符串; 第三个参数是标致位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。 re.search   re.search函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回,如果字符串没有匹配,则返回None。 import re text = "JGood is a handsome boy, he is cool, clever, and so on..." m = re.search(r'\shan(ds)ome\s', text) if m: print m.group(0), m

Python正则表达式指南

早过忘川 提交于 2020-03-08 14:28:47
  正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的。下面,我来介绍一下python中的正则表达式是怎么使用的。  一、元字符 (参见 python 模块 re 文档)   . 匹配任意字符(不包括换行符)   ^ 匹配开始位置,多行模式下匹配每一行的开始   $ 匹配结束位置,多行模式下匹配每一行的结束   * 匹配前一个元字符0到多次   + 匹配前一个元字符1到多次   ? 匹配前一个元字符0到1次   {m,n} 匹配前一个元字符m到n次   \\ 转义字符,跟在其后的字符将失去作为特殊元字符的含义,例如\\.只能匹配.,不能再匹配任意字符   [] 字符集,一个字符的集合,可匹配其中任意一个字符   | 逻辑表达式 或 ,比如 a|b 代表可匹配 a 或者 b   (...) 分组,默认为捕获,即被分组的内容可以被单独取出,默认每个分组有个索引,从 1 开始,按照"("的顺序决定索引值   (?iLmsux) 分组中可以设置模式,iLmsux之中的每个字符代表一个模式,用法参见 模式 I   (?:...)

python——正则匹配数字

亡梦爱人 提交于 2020-02-26 16:42:21
原文: https://www.cnblogs.com/so-letitgo/p/10552415.html 一 案例 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$ 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$ 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$ 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$ 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$ 非负整数:^\d+$ 或 ^[1-9]\d*|0$ 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$ 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1

正则表达式引擎执行原理——从未如此清晰!

我只是一个虾纸丫 提交于 2020-02-26 00:52:47
目前越来越多的网站、编辑器、编程语言都已支持一种叫“ 正则表达式 ”的字符串查找“公式”,有过编程经验的同学都应该了解 正则表达式 (Regular Expression 简写regex)是什么东西,它是一种字符串匹配的模式(pattern),更像是一种逻辑公式。 使用正则表达式去匹配字符串Hello World 中的 Hello 伪代码:/Hello/, "Hello World" 输出:Hello 如何写好一篇关于 正则表达式 的文章,我思考了一周的时间,从未有一篇文章能让猪哥如此费神。 因为我觉得 正则表达式 :难记忆、难描述、广而深且不受重视,有人说正则表达式既好写也难写! 好写 :无非写一些常用、实用的案例,说实话你们每个人都能写出这种:在网上百度一下然后结合一点自己的实际经验,一篇文章就出来了。 难写 :很多人都认为正则简单,不用记,要用就百度一下。但是绝大多数人了解的只是正则的一个小面,真正的精髓却很少关注! 猪哥希望大家能了解到正则的知识点其实非常非常多,尤其是 正则引擎执行原理以及正则优化 ,这算是正则表达式的进阶知识点,面试中也可能会被问到。 一、起源与发展 我们在学习一门技术的时候有必要了解其起源与发展过程,这对我们去理解技术本身有一定的帮助! 20世纪40年代 :正则表达式最初的想法来自两位神经学家:沃尔特·皮茨与麦卡洛克,他们研究出了一种用数学方式来描述

python中使用正则

风流意气都作罢 提交于 2020-02-25 19:46:09
import re text = "123123aoasasdfaisdfs阿瑟东阿瑟东佛阿迪斯发到付撒大沙发" # 查找所有的数字 nums = re.findall(r'\d+', text) print(nums) # 查找所有的单词 words = re.findall(r'[a-zA-Z]+', text) print(words) # 查找所有的汉字 chinese_word = re.findall(r'[\u4e00-\u9fa5]+', text) # chinese_word = re.findall(r'[\u4e00-\u9fa5]{4, 10}', text)# chinese_word = re.findall(r'[\u4e00-\u9fa5]{10}', text) print(chinese_word) 来源: https://www.cnblogs.com/ldlx-mars/p/12363262.html

前端基础之JavaScript

一个人想着一个人 提交于 2020-02-25 12:38:47
JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中),后将其改名ScriptEase(客户端执行的语言)。 Netscape(网景)接收Nombas的理念,( Brendan Eich) 在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言。Sun和Netscape共同完成,后改名叫JavaScript。 微软随后模仿在其IE3.0的产品中搭载了一个JavaScript的克隆版叫Jscript。 为了统一三家,ECMA( 欧洲计算机制造协会)定义了ECMA-262规范.国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。从此,Web 浏览器就开始努力(虽然有着不同的程度的成功和失败)将 ECMAScript 作为 JavaScript 实现的基础。 ECMA-262 是 JavaScript 标准的官方名称。 ECMAScript 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加tru/catch ECMAScript 4 没有发布 2009

python正则模块re使用案例

坚强是说给别人听的谎言 提交于 2020-02-23 16:53:48
案例1从固定字符串中进行提取 import re data ='''{'WWW-Authenticate': 'Basic realm="13FFF07B-948F-4654-8DDF-72680B6EE312"', 'Content-Length': '0', 'Date': 'Wed, 07 Aug 2019 06:42:25 GMT'}'''; result= re.findall("realm=\"[^\s]+\"",data); print str(result[0]).split("=")[1]; 案例2=从返回参数中进行提取 import requests,re,json url = 'http://www.baidu.com' data = requests.post(url);#对百度URL进行post请求 result = data.headers;#拿到请求返回头 result_json=json.dumps(str(result)); res = re.findall(''' 'Content-Length': '(.+?)',''', result_json); print res;    来源: https://www.cnblogs.com/zh718594493/p/12350368.html

python 正则

放肆的年华 提交于 2020-02-14 01:49:22
python 正则 1、pattern对象的方法 (1)match方法:默认从头开始匹配,只匹配一次,返回一个match对象 Match对象 = pattern.match( string,#要匹配的目标字符串 start,#要匹配目标字符串的起始位置(可选) end#结束位置(可选) ) (2)search 方法:全文匹配,只匹配一次,返回一个match对象 Match = pattern.search( string,#要匹配的目标字符串 start,#要匹配目标字符串的起始位置(可选) end#结束位置(可选) ) (3)findall方法:全文匹配,匹配多次,返回一个list list= pattern.findall( string,#要匹配的目标字符串 start,#要匹配目标字符串的起始位置(可选) end#结束位置(可选) ) (4)finditer方法:全文匹配,匹配多次,返回一个迭代器,迭代器里面存储的是match对象 迭代器= pattern.findall( string,#要匹配的目标字符串 start,#要匹配目标字符串的起始位置(可选) end#结束位置(可选) ) 什么是迭代器? 当有一种数据或者内容比较多的时候,可以将其分装迭代器。—通过for循环来使用这个迭代器就可以获取其中的每一个数据。 有__next__和__iter__。 可迭代对象?有_

expect正则捕获返回结果

谁说我不能喝 提交于 2020-02-11 20:48:53
expect正则捕获返回结果 expect: expect -re "([0-9]*)([a-zA-Z]*)" send_user "num is $expect_out(1,string), string is $expect_out(1,string)" 这里[0-9]*表示一个或多个数字,[a-zA-Z]*表示多个字母。()用于分组,它们分别存放在$expect_out(1,string)和$expect_out(2,string)中。 pexpect:python中的expect child.expect("([0-9]*)([a-zA-Z]*) print "num is %s, string is %s" % (child.match.group(1),child.match.group(2)) 注意,pexpect 匹配字符串是从sendline的命令开始算的, 而不是命令返回结果开始。 比如,我现在执行pgrep ssh0,它的返回是ssh0的pid,如果我的expect re用"(\d+)",最后output匹配的结果是0, 其中child.before = ‘pgrep ssh’,child.after = '0' child.sendline (“pgrep shh0”) child.expect("(\d+)") output = child.match