python里使用正则表达式的后向搜索否定模式

原创 2017年11月08日 17:23:11
在前面学习了前向搜索的否定模式,其实也存在后向搜索的否定模式,就是说先把字符串匹配过后,再来回过头去判断是否不需要的字符串,它的语法是这样: (?<!pattern)。由于这个语法是搜索前面已经匹配的字符串,所以必须是固定长度的字符串,并且不能是组索引,这与前向搜索有区别的。例子如下:
#python 3.6
#蔡军生 
#http://blog.csdn.net/caimouse/article/details/51749579
#
import re

address = re.compile(
    '''
    ^

    # An address: username@domain.tld

    [\w\d.+-]+       # username

    # Ignore noreply addresses
    (?<!noreply)

    @
    ([\w\d.]+\.)+    # domain name prefix
    (com|org|edu)    # limit the allowed top-level domains

    $
    ''',
    re.VERBOSE)

candidates = [
    u'first.last@example.com',
    u'noreply@example.com',
]

for candidate in candidates:
    print('Candidate:', candidate)
    match = address.search(candidate)
    if match:
        print('  Match:', candidate[match.start():match.end()])
    else:
        print('  No match')


结果输出如下:
Candidate: first.last@example.com
  Match: first.last@example.com
Candidate: noreply@example.com
  No match

在这里同样实现识别不作回复的EMAIL地址。

深入浅出Numpy
http://edu.csdn.net/course/detail/6149 

Python游戏开发入门

你也能动手修改C编译器

纸牌游戏开发

http://edu.csdn.net/course/detail/5538 

五子棋游戏开发

http://edu.csdn.net/course/detail/5487
RPG游戏从入门到精通
http://edu.csdn.net/course/detail/5246
WiX安装工具的使用
http://edu.csdn.net/course/detail/5207
俄罗斯方块游戏开发
http://edu.csdn.net/course/detail/5110
boost库入门基础
http://edu.csdn.net/course/detail/5029
Arduino入门基础
http://edu.csdn.net/course/detail/4931
Unity5.x游戏基础入门
http://edu.csdn.net/course/detail/4810
TensorFlow API攻略
http://edu.csdn.net/course/detail/4495
TensorFlow入门基本教程
http://edu.csdn.net/course/detail/4369
C++标准模板库从入门到精通 
http://edu.csdn.net/course/detail/3324
跟老菜鸟学C++
http://edu.csdn.net/course/detail/2901
跟老菜鸟学python
http://edu.csdn.net/course/detail/2592
在VC2015里学会使用tinyxml库
http://edu.csdn.net/course/detail/2590
在Windows下SVN的版本管理与实战 
http://edu.csdn.net/course/detail/2579
Visual Studio 2015开发C++程序的基本使用 
http://edu.csdn.net/course/detail/2570
在VC2015里使用protobuf协议
http://edu.csdn.net/course/detail/2582
在VC2015里学会使用MySQL数据库
http://edu.csdn.net/course/detail/2672


版权声明:本文为博主原创文章,未经博主允许不得转载。

Python正则表达式前向/后向搜索的肯定/否定模式的区别和示例

零宽断言区别   语法 含义 示例 前向搜索肯定模式零宽度正预测先行断言 匹配exp前面的位置 (?=exp) 用\b\w+(?=ing\b)查找I'm singing ...
  • lilongsy
  • lilongsy
  • 2017年11月11日 15:29
  • 380

python里使用正则表达式的边界符进行匹配

在我们日常使用中,经常需要搜索关键位置进行字符串的匹配,比如一行文本的开头,又比如一个字符串的开头,或者结尾。 这时候就需要使用正则表达式的边界符进行匹配,它们定义如下:定义字符 意义^ 字符串的开头...
  • caimouse
  • caimouse
  • 2017年10月12日 18:23
  • 1362

[Python]Regular Expression Syntax(CHN)

简介Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式。Emacs 风格模式可读性...
  • formX
  • formX
  • 2007年10月09日 17:31
  • 2152

正则表达式环视否定例子

使用正则表达式来搜索文本是高效快捷的方式,尤其是对于html文件的关键。比如要搜索下文中的红色字体,123testkeyword is ok首先,我写了一个这样的正则表达式:reg = re.comp...
  • vah101
  • vah101
  • 2011年01月30日 22:27
  • 4838

python里使用正则表达式的后向搜索肯定模式

在前面学习了比较多模式,有前向搜索的,也有后向搜索的,有肯定模式的,也有否定模式的。这次再来学习一个,就是后向搜索肯定模式,意思就是说已经扫描过了的字符串,还想后悔去看一下,是否可以匹配。它的语法是:...
  • caimouse
  • caimouse
  • 2017年11月09日 18:24
  • 3980

Python初级学习笔记

Python学习笔记一、基本语法python2.x与python3.x区别很大,新版特性很强,更优化,此笔记学习新版本特性,暂不关注旧版本。 标识符 标识符:数字、字母、下划线,且数字不开头。 ...
  • binglumeng
  • binglumeng
  • 2016年11月03日 17:31
  • 654

python 正则表达式(详细版)

Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。Python 1.5之前版本则是通过 regex 模块提供 Emecs 风格的模式。Emacs 风格模式可读性稍差...
  • qq_24918869
  • qq_24918869
  • 2016年08月13日 21:02
  • 460

正则的前向声明和反前向声明

(?=) 前向声明 (?!) 反前向声明 (与前向声明相反) 如: var str = ‘abcacad’; //只匹配后面接有b的a   (?!):不接b的a var re = /a(...
  • u013162144
  • u013162144
  • 2015年04月21日 20:28
  • 440

Python正则表达式--前向界定符

前向界定符包括前向肯定界定符和前项否定界定符,如下所示: (?=...) 前向肯定界定符。如果所含正则表达式,以 ... 表示,在当前位置成功匹配时成功,否则失败。但一旦所含表达式已经尝试,匹配引...
  • lwnylslwnyls
  • lwnylslwnyls
  • 2013年05月08日 17:48
  • 1759

Python正则表达式大全

就其本质而言,正则表达式(或 RE)是一种小型的、高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现。使用这个小型语言,你可以为想要匹配的相应字符串集指定规则;该...
  • weixin_40475396
  • weixin_40475396
  • 2018年01月31日 17:29
  • 8
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python里使用正则表达式的后向搜索否定模式
举报原因:
原因补充:

(最多只允许输入30个字)