python 正则表达式 断言 不定长表达式_【教程】详解Python正则表达式之: (?!…) negative lookahead assertion 前向否定匹配 /前向否定断言...
Python 2.7的官网文档中的解释是:(?!...)Matches if ... doesn’t match next. This is a negative lookahead assertion. For example, Isaac (?!Asimov) will match 'Isaac ' only if it’s not followed by 'Asimov'.
下面,就来详细解释一下其中的含义:
1.negative lookahead assertion,此处我将其翻译为 前向否定匹配 或 前向否定断言
2.从字面意思就能看出,其含义是,从当前匹配的地方,继续向前看(lookahead),然后不希望(negative)找到对应的内容
其不论是语法还是所表示的含义,都正与:
相反;
关于示例代码,暂时就用回答某人的问题的那个代码:#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Function:
【教程】详解Python正则表达式之: (?!…) negative lookahead assertion 前向否定匹配 /前向否定断言
https://www.crifan.com/detailed_explanation_about_python_regular_express_negative_lookahead_assertion
Author: Crifan Li
Version: 2012-12-08
Contact: admin at crifan dot com
"""
import re;
txt ="bn','dd_ff');xm_a([1,'zhangming',0,2,'yuwenjige','lishijige',1,0,3,1,0,0.999,1,1,0,0]);xm_a([2,'wangmeng',0,2,'shuxuejige','dilijige',1,0,3,1,0,0.999,1,1,1,0]);xm_a([3,'wangli',0,2,'shuxuejige','dilijige',1,0,2,0,0,0.999,1,1,1,0]);zuobi(6,3,'4:5');fg_gh('xxx','vb_4');xm_a([4,'dashan',0,2,'huaxuejige','yingyujige',1,0,3,1,1,0.999,0,1,0,0]);";
#下面是普通的,常见的那种,搜索符合某种格式的字符串
allJigeIncludeZuobi = re.findall("xm_a\(\[\d+,'(\w+)',[^\(\)\[\]]+\]\);", txt);
print allJigeIncludeZuobi; #['zhangming', 'wangmeng', 'wangli', 'dashan']
#而对于其中,想要排除掉某种特殊的情况
#比如此处希望后面不带作弊的,即后面没有zuobi字样的
#则就可以使用 前向否定匹配,添加上对应的,不希望出现的内容,就可以过滤掉,对应的项了
#此处就可以实现,过滤掉作弊那位:wangli
allJigeNoZuobi = re.findall("xm_a\(\[\d+,'(\w+)',[^\(\)\[\]]+\]\);(?!zuobi)", txt);
print allJigeNoZuobi; #['zhangming', 'wangmeng', 'dashan']
【总结】
negative lookahead assertion,就是,除了正常的搜索匹配之外,继续往前走两步,继续看看,不要出现某些内容
以达到,在正常匹配到的内容的基础上,过滤掉某种不想要的内容。
python 正则表达式 断言 不定长表达式_【教程】详解Python正则表达式之: (?!…) negative lookahead assertion 前向否定匹配 /前向否定断言...相关推荐
- python 中split函数的应用_举例详解Python中的split()函数的使用方法
函数:split() python中有split()和os.path.split()两个函数,具体作用如下: split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(li ...
- python动态显示进度条_实例详解python如何轻松实现动态进度条
本次的这篇文章主要是和大家分享了关于实例详解python如何轻松实现动态进度条,有需要的小伙伴可以看一下 思路及讲解 假设有一个1000000数据的列表(为了让进度条可以显示出来,很大的数据),我们每 ...
- python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...
文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...
- python用turtle画字母n、h_详解python使用turtle库来画一朵花
看了群主最后成像的图片,应该是循环了36次画方框,每次有10度的偏移. 当然不能提前看答案,自己试着写代码. 之前有用过海龟画图来画过五角星.奥运五环.围棋盘等,所以感觉不难. # !/usr/bin ...
- python 正则表达式 断言 不定长表达式_MyEssay 之 Python正则表达式 —— 四种断言扩展的理解...
我们经常用正则表达式来检测一个字符串中包含某个子串,要表示一个字符串中不包含单个的某字符或某些字符也很容易,用[^...]形式就可以了.但是要表示一个字符串中不包含某个子串(由字符序列构成)的时候,用 ...
- python官网下载步骤除了windows-python安装教程详解|python下载安装教程步骤
Python是现在最受欢迎的编程语言,使用Python开发软件应用效率极高,相比其它语言有不可比拟的优势,Python是一种跨平台的计算机程序设计语言. 免费开源.最初被设计用于编写自动化脚本(she ...
- python下载步骤-python安装教程详解|python下载安装教程步骤
Python是现在最受欢迎的编程语言,使用Python开发软件应用效率极高,相比其它语言有不可比拟的优势,Python是一种跨平台的计算机程序设计语言. 免费开源.最初被设计用于编写自动化脚本(she ...
- python twisted安装_图文详解python之twisted模块安装
Twisted是一个事件驱动的网络框架. 最近开始学习了解Twisted,首先肯定要安装twisted模块. 但是在cmd下执行:pip install twisted 出现了下面的问题:" ...
- python手机版怎么运行项目或脚本-详解python运行三种方式
方式一 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗口如下: $ p ...
最新文章
- ueditor html显示图片,百度ueditor编辑器上传图片后img标签的title、alt属性优化简单方法...
- 有关XSS编码问题的个人总结
- 第四范式陈雨强:万字深析工业界机器学习最新黑科技 By 机器之心2017年7月25日 16:38 近日,全球最顶级大数据会议 Strata Data Conference 在京召开。Strata 大
- c语言编制编程语言,C语言CGI编程入门(一)
- C#进阶之WebAPI(二)
- (四)将容器部署到Azure上的Kubernetes
- JSP中Session的使用
- Linux 内核中用 GFP_ATOMIC 申请内存究竟意味着什么?
- python和java反射_python实现反射功能
- android-手势-基础知识总结
- mysql repalication_MYSQL数据库知识点总结
- 56. Yii Modules
- Matlab PCA+SVM人脸识别(二)——GUI界面设计
- markdown语法测试
- java fianlly_Java冷知识:finally中的代码一定会执行吗?
- git switch 与 git checkout的不同
- Lumen企业站内容管理实战 - 欢迎页面
- wannafly summer camp day6
- origin Pro 9.0画多条三维折线图(此处以两条为例)
- CodeMirror 基础配置指南
热门文章
- 从方法到实践,银行如何搭建用户体验管理体系?
- 音视频技术开发周刊 | 248
- 从零开始学java(二十六)--多维数组,多维数组存储表格数据
- CC00009.python——|HadoopPython.v09|——|Arithmetic.v09|语法:核心语法运算符.V1|
- c51实现老人跌倒,心率异常报警系统
- Linux环境重启系统网卡down,linux重启网卡命令有哪些
- Qt Mainwindow添加/删除标题栏
- java爬取新浪微博带有“展开全文”的完整微博文本
- es6删除对象的某个属性
- TestFlight上架流程