Python re.search和re.findall的比较

Python re.search和re.findall的比较:

先分析re.search

import re
s1=‘hjxxHelloxxrynxxPythonxxplkhjxxHixxrynxxWorldxxplk‘

f1=re.search(‘xx(.*?)xx‘,s1)
print(f1)

f2=re.search(‘xx(.*?)xx‘,s1).group(1)
print(f2)

f3=re.search(‘xx(.*?)xxrynxx(.*?)xx‘,s1)
print(f3)

f41=re.search(‘xx(.*?)xxrynxx(.*?)xx‘,s1).group(1)#这里如果用group(3)则返回no such group,可见re.search寻找第一个满足条件序列
print(f41)

f42=re.search(‘xx(.*?)xxrynxx(.*?)xxplkhjxx(.*?)xxrynxx(.*?)xx‘,s1).group(3)
print(f42)
print(‘end‘)

输出为:

<_sre.SRE_Match object; span=(2, 11), match=‘xxHelloxx‘>  #数据类型为‘sre.SRE_MATCH’
Hello  #数据类型为‘str’
<_sre.SRE_Match object; span=(2, 24), match=‘xxHelloxxrynxxPythonxx‘>
Hello
Hi
end

再来看re.findall:

import re
s1=‘hjxxHelloxxrynxxPythonxxplkhjxxHixxrynxxWorldxxplk‘

f1=re.findall(‘xx(.*?)xx‘,s1)
print(f1)

f2=re.findall(‘xx(.*?)xxrynxx(.*?)xx‘,s1)
print(f2)
print(f2[0])
print(f2[1][0])
print(type(f2))
print(type(f2[0]))
print(type(f2[1][0]))

print(‘end‘)

输出为:

[‘Hello‘, ‘Python‘, ‘Hi‘, ‘World‘]
[(‘Hello‘, ‘Python‘), (‘Hi‘, ‘World‘)]
(‘Hello‘, ‘Python‘)
Hi
<class ‘list‘>
<class ‘tuple‘>
<class ‘str‘>
end

原文地址:https://www.cnblogs.com/zhangziyan/p/9118969.html

时间: 2024-10-11 06:37:36

Python re.search和re.findall的比较的相关文章

惊艳发现VS工具python项目Search Paths的应用

之前,在没有发现VS工具python项目Search Paths的应用时,举个例子:假如项目的文件目录如下: maintest/maintest.py想要使用common/tools.py文件时,不得不在maintest.py中的代码添加这样的代码: import sys import os from sys import path parentdir = os.path.join( os.path.dirname(os.path.dirname(__file__))) path.append(

Python中的re.search和re.findall之间的区别

参考博客:http://www.crifan.com/python_re_search_vs_re_findall/ 在这里,我想说一下我目前遇到的问题 这是一个本地的文件 text.txt <html> <head> <title>极客学院爬虫测试</title> </head> <body> <div class="topic"><a href="http://jikexueyuan

Python中正则匹配使用findall时的注意事项

在使用正则搜索内容时遇到一个小坑,百度搜了一下,遇到这个坑的还不少,特此记录一下. 比如说有一个字符串  "[email protected]@[email protected]@asdfcom" 想匹配出里面所有的邮箱地址,该怎么实现呢? 写了个正则,测试一下: >>> import re >>> s = "[email protected]@[email protected]@asdfcom" >>> pat

Python里面search()和match()的区别

match()函数只检测字符串开头位置是否匹配,匹配成功才会返回结果,否则返回None import re print(re.match("func", "function")) # 打印结果 <_sre.SRE_Match object; span=(0, 4), match='func'> print(re.match("func", "function").span()) # 打印结果 (0, 4) prin

[Leetcode][Python]33: Search in Rotated Sorted Array

# -*- coding: utf8 -*-'''__author__ = '[email protected]' 33: Search in Rotated Sorted Arrayhttps://oj.leetcode.com/problems/search-in-rotated-sorted-array/ Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6

[Leetcode][Python]34: Search for a Range

# -*- coding: utf8 -*-'''__author__ = '[email protected]' 34: Search for a Rangehttps://oj.leetcode.com/problems/search-for-a-range/ Given a sorted array of integers, find the starting and ending position of a given target value.Your algorithm's runt

[Leetcode][Python]35: Search Insert Position

# -*- coding: utf8 -*-'''__author__ = '[email protected]' 35: Search Insert Positionhttps://oj.leetcode.com/problems/search-insert-position/ Given a sorted array and a target value, return the index if the target is found.If not, return the index whe

Python中正则匹配使用findall,捕获分组(xxx)和非捕获分组(?:xxx)的差异

转自:https://blog.csdn.net/qq_42739440/article/details/81117919 下面是我在用findall匹配字符串时遇到的一个坑,分享出来供大家跳坑. 例题: 如图所示: 正则a和正则b两个式子匹配出来的结果是不同的. 那 ?: 的作用就是把捕获分组转变为非捕获分组. 什么是捕获组和非捕获组呢? (qq|163|126) ---> 这样单独的括号就为捕获组 (?:qq|163|126) ---> 这样在原有分组里加上?: 就把捕获组转变为一个非捕获

python题目-----search()和match()的区别

1. match()函数只检测re是不是在string的开始位置匹配,也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none 2. search()会扫描整个string查找匹配 例如: import re print(re.match("good", "morning good").span()) #报错分会none print(re.match("good", "good