当前位置:首页 » 编程语言 » findallpython

findallpython

发布时间: 2023-01-24 00:39:49

A. python 34:正则表达式的search()方法和findall()方法得到的值

search()方法得到的值,其类型是re.Match对象。

findall()方法得到的值,其类型是list。

search()方法得到的值,其类型是对象re.Match。这个对象有自己的方法。

其中最常用的两个方法是group()和groups()。

group()方法的参数为一个非负整数。

group(0)是匹配字符串,group(1)为其第一个分组,group(2)为第二个分组,余类推。如果没有相应的分组,则抛出异常。

groups()可以有参数,也可以没有参数,其值与参数无关,所以就用无参数的形式。它的值为一个元组,其元素为所有分组。注意groups()的元素中不一定有匹配字符串,它只是所有分组。可以将整个正则表达式作为一个分组(在最外面加圆括号),这样其第一个元素就是匹配字符串。

findall()得到的值是一个列表。

这个列表的元素都是元组,每一个元组对应一个匹配,是这个匹配的所有分组。每一个元组与search()得到的值的groups()方法的值的性质一样。同样,元组中的元素不一定有匹配字符串,它们只是所有分组。可以将整个正则表达式作为一个分组(在最外面加圆括号),这样其第一个元素就是匹配字符串。

B. python的findall函数调用总是出错,请教要怎么解决

我一般都是用math或者seach的,你可以试试。
re.match
re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词。
import retext ="JGood is a handsome boy, he is cool, clever, and so on..."
m = re.match(r"(\w+)\s", text)
if m:
print m.group(0), '\n', m.group(1)
else:
print'not match're.match的函数原型为:re.match(pattern, string, flags)第一个参数是正则表达式,这里为"(\w+)\s",如果匹配成功,则返回一个Match,否则返回一个None;第二个参数表示要匹配的字符串;第三个参数是标致位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。re.searchre.search函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回,如果字符串没有匹配,则返回None。import re
text ="JGood is a handsome boy, he is cool, clever, and so on..."
m = re.search(r'\shan(ds)ome\s', text)
if m:
print m.group(0), m.group(1)
else:
print'not search're.search的函数原型为: re.search(pattern, string, flags)每个参数的含意与re.match一样。 re.match与re.search的区别:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

C. 说说在 Python 中,如何找出所有字符串匹配

Regex 对象有一个 findall() 方法,它会返回包含所查找字符串的所有匹配。这与 search() 方法明显不同,search() 将返回一个 Match 对象,其中包含被查找字符串中的 “ 第一次 ” 匹配文本。请看以下示例,注意区分:

运行结果:

如果调用 findall 的正则表达式不存在分组(比如上例),那么方法 findall() 将返回一个匹配字符串的列表,例如上例的 ['0591-83822032', '0591-83822033']。

如果调用 findall 的正则表达式存在分组,那么方法 findall() 将返回一个字符串元组的列表(每个分组对应一个字符串),请看下例:

运行结果:

D. python正则表达式findall的匹配问题

python的正则中用()会进行匹配,所以返回结果是['',''],就是两个()中的匹配。要想达到原来的匹配效果,就是把4匹配出来,有两种解决方法:
1.最外层加个大括号,变成:m = re.findall('(([0-9])*4([0-9])*)',
'[4]'),返回结果的第一个元素就是匹配结果了。
2.去除()的匹配结果返回,在括号前面加入?:,变成m =
re.findall('(?:\d)*4(?:\d)*', '[4]'),返回结果就是要匹配的结果了。

E. python中findall

这个是Python re正则模块
就是按照p规则匹配html的文本内容。
p的规则具体是什么意思,你要去学习Python 正则语法。

F. python的re,findall 忽略大小写

没那几个人说的那么麻烦,只需要加一个参数,如下:

import re

SHA = 'AC:B0:F3:26:EA:C1'

result1 = re.findall(r'ac:.*:c1',SHA) # 这样是搜不到的,因为大小写不匹配

result2 = re.findall(r'ac:.*:c1',SHA,re.IGNORECASE) # 这是能搜到的,已忽略大小写

print('未忽略大小写搜索结果:',result1)

print('忽略大小写搜索结果:',result2)

结果:

运行结果

G. 小白求助大神python中findall()和sub()的结果

第一个问题,你搞错了,不是逗号,是两个空字符串,返回的结果列比里其实有三个元素。虽然看起来很像两个。所以,它找到了符合条件的三个对象,也就是['section{First', '', ''] 。右大括号的位置是理解的关键。

第二个问题。sub方法是用你指定的字符串替换‘匹配’上的字符串。前面我们匹配上了3个位置,将它们逐一替换,就得到了'subsection{}subsection{}}subsection{}'。注意其中那个蹦单的右大括号。

第三个问题。你使用了sub的分组引用功能。它在替换的同时会用匹配上的内容替换‘1’。你在前面匹配上了一个字符串和两个空格,将它们依次代入问题二结果中的三对大括号就能得到最终结果'subsection{section{First}subsection{}}subsection{}'

更多内容参考正则表达式和re模块

H. 小白请教下python正则表达式findall()返回空值的问题

星号表示匹配0到任意次,因此多了两个0长度的字符,因为'}'匹配非}的任意字符0次
改成至少一次就得到你期待的结果,就是把*改成+

I. python findall 有时候能正常运行,有时候总是hang住,为什么

这里我们用了一个 Python的正则模块 re.findall来做字符串匹配解决这个问题.

看下正则的流程



  • 首先说下什么是正则表达式, 正则其实就是对字符串特征的抽象!!!

  • 当我们的字符串特性变化了,我们不需要大幅度修改程序,只要修改该特征结构就可以重新匹配我们要的字符.


这里我们用到了以下几种类型 正则表达式



  • 字符




  • 边界




  • 特殊构造



回到题目 我们需要做的是将"("和")"之间的字符串匹配出来.
?<=[(] 代表 "(" 开始,但不一定是串首
?=[)] 代表 ")" 结束,但不一定是串尾
[^()]+.[^()]+ 代表 中间含 "."的字符串, "."是"."转义字符 "+"代表里面可以有1个"."或无数个"."



  • 最后代码片断:


import re
re.findall("(?<=[(])[^()]+.[^()]+(?=[)])",text)

热点内容
好用的反编译 发布:2025-07-20 10:32:44 浏览:56
9月9日复刻先祖是什么安卓 发布:2025-07-20 10:30:27 浏览:604
流控数据库 发布:2025-07-20 10:27:16 浏览:411
云抢包网站源码 发布:2025-07-20 10:25:38 浏览:119
安卓多开为什么一直打不开 发布:2025-07-20 10:25:00 浏览:881
ios移动文件夹 发布:2025-07-20 10:24:50 浏览:689
数控机床编程步骤 发布:2025-07-20 10:14:22 浏览:97
存储单位容量最小的是 发布:2025-07-20 10:14:11 浏览:769
爱情脚本短 发布:2025-07-20 09:56:44 浏览:681
存款机的安全密码是什么 发布:2025-07-20 09:53:03 浏览:33