匹配搜索 match,search,findall区别

匹配搜索 match,search,findall区别

match首字母搜索匹配,匹配即停止

import re
re.match(r‘de‘,‘de8ug‘).group() 
‘de‘
re.match(r‘de‘,‘8ugde‘).group()  
---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-37-4da79a63dcbc> in <module>()
----> 1 re.match(r‘de‘,‘8ugde‘).group()  # 只能首字母匹配

AttributeError: ‘NoneType‘ object has no attribute ‘group‘

search所有字母搜索匹配,匹配即停止

re.search(r‘de‘,‘8ugde‘).group() 
‘de‘
re.search(r‘de‘,‘de8ug‘).group() 
‘de‘
re.search(‘de‘,‘8ugde 88deug‘).group() 
‘de‘

match和search结合group使用

re.match(r"(\w+) (\w+)", "Isaac Newton, physicist").group() # 首字母匹配,匹配即停止
‘Isaac Newton‘
re.match(r"(\w+) (\w+)", "Isaac Newton, physicist").group(1)
‘Isaac‘
re.match(r"(\w+) (\w+)", "Isaac Newton, physicist").group(2)
‘Newton‘
re.search(r"(\w+) (\w+)", "IsaacNewton, physicist fsdf").group()
‘physicist fsdf‘
re.search(r"(\w+) (\w+)", "Isaac Newton, physicist fsdf").group()  # 所有字母匹配,匹配即停止
‘Isaac Newton‘
re.search(r"(\w+) (\w+)", "Isaac Newton, physicist fsdf").group(1)
‘Isaac‘
re.search(r"(\w+) (\w+)", "Isaac Newton, physicist fsdf").group(2)
‘Newton‘

findall 找到所有匹配的内容

re.findall(r"(\w+) (\w+)", "Isaac Newton, physicist fsdf") # 找到所有匹配的内容,返回一个列表
[(‘Isaac‘, ‘Newton‘), (‘physicist‘, ‘fsdf‘)]
re.findall(r"(\w+) (\w+)", "Isaac Newton, physicist fsdf")[0]
(‘Isaac‘, ‘Newton‘)
re.findall(r"(\w+) (\w+)", "Isaac Newton, physicist fsdf")[1]
(‘physicist‘, ‘fsdf‘)

返回类型

type(re.match(r"(\w+) (\w+)", "Isaac Newton, physicist").group()) # 返回字符串
str
type(re.search(r"(\w+) (\w+)", "Isaac Newton, physicist").group()) # 返回字符串
str
type(re.findall(r"(\w+) (\w+)", "Isaac Newton, physicist fsdf"))  # 返回列表
list

原文地址:http://blog.51cto.com/13587169/2128240

时间: 2024-10-13 23:25:04

匹配搜索 match,search,findall区别的相关文章

re.match re.search re.findall区别

re正则表达式里面,常用的三种方法的区别. re.macth和search匹配得到的是match对象,findall得到的是一个列表. match从字符串开头开始匹配,search返回与正则表达式匹配的第一个子串,findall则返回所有匹配到的. 如果要匹配的东西是字符串中唯一的只有一个或者直线那个取一个,最好不用findall,findall能匹配所有必然会查找整个字符串,search找到一个就结束查找了.废话不多说,选取一个页面源码大的网页,例如获取新浪网页的编码. #coding=utf

Python学习笔记——基础篇【第五周】——re.match与re.search的区别

正则表达式 语法: import re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0-9]代表匹配0至9的任意一个数字, 所以这里的意思是对传进来的字符串进行匹配,如果这个字符串的开头第一个字符是数字,就代表匹配上了 m = p.match('14534Abc') #按上面生成的正则对象 去匹配 字符串, 如果能匹配成功,这个m就会有值, 否则m为None if m: #不为空代表匹配上了 print(m.group

40 python 正则表达式 match方法匹配字符串 使用search函数在一个字符串中查找子字

第一课: 使用match方法匹配字符串 # 正则表达式:使用match方法匹配字符串 ''' 正则表达式:是用来处理文本的,将一组类似的字符串进行抽象,形成的文本模式字符串 windows dir *.txt file1.txt file2.txt abc.txt test.doc a-file1.txt-b linux/mac ls 主要是学会正则表达式的5方面的方法 1. match:检测字符串是否匹配正则表达式 2. search:在一个长的字符串中搜索匹配正则表达式的子字符串 3. fi

5.Python里面match()和search()的区别?

Python里面match()和search()的区别? '''match()从第一个字符开始找,如果第一个就不匹配,会直接返回None,不继续匹配.主要用于匹配开头''' #coding=utf-8 import re result = re.match("www","www.cn") result.group() >>'www' # 否则返回None '''search()会在整个字符串中查找,知道找到一个匹配的''' #coding=utf-8 i

python正则表达式函数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.ma

python学习:python中的正则表达式函数match和search()的区别

match函数 binary_re='[01]*' pattern = re.compile(binary_re) m=re.match(binary_re,destStr) if m:      print m.group(0) else:     print 'not match' match函数是从字符串起始位置开始进行匹配,匹配失败返回None,匹配成功的话, m.group(0)为匹配的结果 2.search函数 binary_re='[01]*' pattern = re.compi

精简版搜索(search lite)

ES有两种格式的search api: "lite"--query string版本,这个版本期望所有的参数在请求中指定并传递 full request body版本期望得到一个JSON请求体,并且使用一个名为DSL的丰富的搜索语言 query string搜索对在使用命令行的即席查询(ad hoc queries)是很有用的.例如要查询type是tweet并且字段"tweet"包含"elasticsearch"单词的document: GET

JS中exec函数与match函数的区别与联系

总结: 正则规则的声明,两种方法: exec是RegExp类的匹配方法 match是字符串类的匹配方法 var reg = /aaa/g; var reg = new RegExp("aaa","g"); 创建的时候 可以用 这两种方法创建,唯一的区别在于 第二种 用NEW的方法可以在规则内使用变量,例如 var name="xaiohua"; var reg=new RegExp("aa"+xiaohua+"aa&

exec与match方法的区别

http://www.cnblogs.com/xiehuiqi220/archive/2008/11/05/1327487.html var someText= "web2.0 .net2.0" ; var pattern=/(\w+)(\d)\.(\d)/g; var outCome_exec=pattern.exec(someText); var outCome_matc=someText.match(pattern); console.info(outCome_exec) //