當前位置:首頁 » 編程語言 » 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)

熱點內容
bf3什麼配置好 發布:2025-07-20 14:42:34 瀏覽:134
vs2015編寫python 發布:2025-07-20 14:42:30 瀏覽:483
順序存儲的空間壓力大不大 發布:2025-07-20 14:41:50 瀏覽:387
ff15和尼爾哪個配置要求高 發布:2025-07-20 14:37:19 瀏覽:848
安卓怎麼創建ftp伺服器地址 發布:2025-07-20 14:35:58 瀏覽:525
c編譯器和解釋器的區別 發布:2025-07-20 14:27:32 瀏覽:334
語句編譯一個計算機 發布:2025-07-20 14:27:24 瀏覽:928
惠支付普通密碼被鎖定什麼原因 發布:2025-07-20 14:27:21 瀏覽:528
榮譽積分伺服器怎麼搭建 發布:2025-07-20 14:15:18 瀏覽:231
我的C語言 發布:2025-07-20 14:14:21 瀏覽:280