Python中正则表达式match()、search()函数及match()和search()的区别详解

match()和search()都是python中的正则匹配函数,那这两个函数有何区别呢?

match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none

例如:

#! /usr/bin/env python
# -*- coding=utf-8 -*-
import re
text = 'pythontab'
m = re.match(r"\w+", text)
if m:
  print m.group(0)
else:
  print 'not match'

结果是:pythontab

而:

#! /usr/bin/env python
# -*- coding=utf-8 -*-
#
import re
text = '@pythontab'
m = re.match(r"\w+", text)
if m:
  print m.group(0)
else:
  print 'not match'

结果是:not match

search()会扫描整个字符串并返回第一个成功的匹配

例如:

#! /usr/bin/env python
# -*- coding=utf-8 -*-
#
import re
text = 'pythontab'
m = re.search(r"\w+", text)
if m:
  print m.group(0)
else:
  print 'not match'

结果是:pythontab

那这样呢:

#! /usr/bin/env python
# -*- coding=utf-8 -*-
#
import re
text = '@pythontab'
m = re.search(r"\w+", text)
if m:
  print m.group(0)
else:
  print 'not match'

结果是:pythontab

总结:

Python中正则表达式match()函数

如果不创建pattern对象,我们使用match函数可以直接进行正则表达式的匹配,在我看来这种方式更简洁,不过不适合大型程序的编写,后期维护可能会产生困难,不过编写一些小脚本完全可以胜任。

Python中正则表达式search()函数

search函数和match函数有点类似,都可以匹配模式,但是match和search函数也有区别,而且区别很大,match函数只能够字符串的开始位置开始匹配,而search是可以匹配字符串的任意位置,但也是返回找到的第一个匹配的模式。我们通过例子来了解这俩之间的区别吧。

(0)

相关推荐

  • Python正则替换字符串函数re.sub用法示例

    本文实例讲述了Python正则替换字符串函数re.sub用法.分享给大家供大家参考,具体如下: python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串 然后把它替换成自己想要的字符串的方法 re.sub 函数进行以正则表达式为基础的替换工作 下面是一段示例源码 #!/usr/bin/env python #encoding: utf-8 import re url = 'https://113.215.20.136:9011/113.215.6.77/c3

  • python正则表达式去掉数字中的逗号(python正则匹配逗号)

    分析 数字中经常是3个数字一组,之后跟一个逗号,因此规律为:***,***,*** 正则式 复制代码 代码如下: [a-z]+,[a-z]? 复制代码 代码如下: import re sen = "abc,123,456,789,mnp"p = re.compile("\d+,\d+?") for com in p.finditer(sen):    mm = com.group()    print "hi:", mm    print &qu

  • 比较详细Python正则表达式操作指南(re使用)

    就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.使用这个小型语言,你可以为想要匹配的相应字符串集指定规则:该字符串集可能包含英文语句.e-mail地址.TeX命令或任何你想搞定的东西.然後你可以问诸如"这个字符串匹配该模式吗?"或"在这个字符串中是否有部分匹配该模式呢?".你也可以使用 RE 以各种方式来修改或分割字符串. 正则表达式模式被编译成一系列的字节码,然後由用 C

  • Python正则表达式教程之二:捕获篇

    前言 在上一篇文中,我们介绍了关于Python正则表达式的基础,那么在这一篇文章里,我们将总结一下正则表达式关于捕获的用法.下面话不多说,来看看详细的介绍吧. 捕获 捕获和分组在正则表达式中有着密切的联系,一般情况下,分组即捕获,都用小括号完成(因此,小括号在正则表达式中也属于特殊字符,表达原含义时需要转义): (-)     正常分组,并捕获 (?:-)   分组,但是不捕获 举个例子,假设我们需要匹配一个座机号码: >>> m = re.search(r'^(\d{3,4}-)?(\

  • Python正则捕获操作示例

    本文实例讲述了Python正则捕获操作.分享给大家供大家参考,具体如下: 目的: 给表达式 '10+6/5-4*2' 中每个运算符左右都加一个空格字符,变成:'10 + 6 / 5 - 4 * 2' 思路: 分组.捕获.替换 1. 替换字符中含参数 \1 (此处不能叫参数,想不到叫什么,那就不管它~~) >>> bds = '10+6/5-4*2' # 表达式 >>> m = re.sub(r'([*+-/])', ' \1 ', bds) # 注意\1左右皆有一个空格

  • Python 匹配任意字符(包括换行符)的正则表达式写法

    想使用正则表达式来获取一段文本中的任意字符,写出如下匹配规则: (.*) 结果运行之后才发现,无法获得换行之后的文本.于是查了一下手册,才发现正则表达式中,"."(点符号)匹配的是除了换行符"\n"以外的所有字符. 以下为正确的正则表达式匹配规则: ([\s\S]*) 同时,也可以用 "([\d\D]*)"."([\w\W]*)" 来表示. Web技术之家_www.waweb.cn 在文本文件里, 这个表达式可以匹配所有的英文

  • python正则表达式re模块详细介绍

    本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一样漂亮. 正则表达式使用反斜杆(\)来转义特殊字符,使其可以匹配字符本身,而不是指定其他特殊的含义.这可能会和python字面意义上的字符串转义相冲突,这也许有些令人费解.比如,要匹配一个反斜杆本身,你也许要用'\\\\'来做为正则表达式的字符串,因为正则表达式要是\\,而字符串里,每个反斜杆都要写成\\. 你也可以在字符串前加上

  • Python的爬虫包Beautiful Soup中用正则表达式来搜索

    Beautiful Soup使用时,一般可以通过指定对应的name和attrs去搜索,特定的名字和属性,以找到所需要的部分的html代码. 但是,有时候,会遇到,对于要处理的内容中,其name或attr的值,有多种可能,尤其是符合某一规律,此时,就无法写成固定的值了. 所以,就可以借助正则表达式来解决此问题. 比如, <div class="icon_col"> <h1 class="h1user">crifan</h1> <

  • Python中正则表达式的用法实例汇总

    正则表达式是Python程序设计中非常实用的功能,本文就常用的正则表达式做一汇总,供大家参考之用.具体如下: 一.字符串替换 1.替换所有匹配的子串 用newstring替换subject中所有与正则表达式regex匹配的子串 result, number = re.subn(regex, newstring, subject) 2.替换所有匹配的子串(使用正则表达式对象) reobj = re.compile(regex) result, number = reobj.subn(newstri

  • Python 中文正则表达式笔记

    从字符串的角度来说,中文不如英文整齐.规范,这是不可避免的现实.本文结合网上资料以及个人经验,以 python 语言为例,稍作总结.欢迎补充或挑错. 一点经验 可以使用 repr()函数查看字串的原始格式.这对于写正则表达式有所帮助. Python 的 re模块有两个相似的函数:re.match(), re.search .两个函数的匹配过程完全一致,只是起点不同.match只从字串的开始位置进行匹配,如果失败,它就此放弃:而search则会锲而不舍地完全遍历整个字串中所有可能的位置,直到成功地

  • Python正则获取、过滤或者替换HTML标签的方法

    本文实例介绍了Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法,具体内容如下 python正则表达式关键内容: python正则表达式转义符: . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 \b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 \W 匹配任意不是字母,数字,下划线,汉字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符 \B 匹配不是单词开头或结束的位置 [^

随机推荐