re模組及其方法

2022-05-08 01:00:06 字數 2445 閱讀 4897

re模組:

import  re

正規表示式本身具有處理字串的能力

如果要處理的字串存在python的記憶體裡,模組--->操作正規表示式

ret= re.findall("\d+","kdk334k5kjkj76k54j5kk")

print(ret)

一次性返回所有匹配到的項,直接存到列表中.

findall 和分組()的問題

import re

ret = re.findall("\d+(?:\.\d+)?","1.32+4.78")

print(ret)

?: 表示取消優先(分組),  ?: 寫在乙個分組的最開始,表示在findall方法取消這個分組優先順序.

下面的例子:

ret=re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5)-(-4*3))")

while '' in ret:

ret.remove('')

print(ret)

注意:!!!:這裡例子中的匹配順序是:依照正規表示式,匹配內容,先匹配\d+\.\d+ 符合就返回這個值,不符合返回 "" 空字串,然後在匹配(\d+),符合就返回這個值,不符合返回 "" 空字串,因為 () 具有優先順序,所以優先顯是的是跟 () 匹配出來的結果

記住!!!在用findall這個方法的時候如果沒有取消()的優先順序的話,就會把正規表示式分成幾個部分,分成幾個部分就會匹配幾個結果,最後返回的是括號()裡的.因為()在findall方法裡具有優先順序.如果分開的幾部分裡正規表示式有重複的只會從左到右依次開始匹配,匹配第乙個正規表示式,匹配成功後,後面的表示式沒有匹配,最後只會 返回 "" 空字元.

ret = re.search("\d+","kkf33kj3kjkd34k4j45kjkjfj")

print(ret)  #正則匹配結果的物件

if ret:

print(ret.group())

一次只匹配第乙個符合條件表示式,以對像的形式返回,通過對物件.group()取實際值,如果沒有匹配到,會返回none 再呼叫group則會報錯.

findall:匹配所有符合條件的       返回乙個列表

search:只匹配第乙個符合條件的  有值返回值,沒有值返回none

ret = re.split("(\d+)","adk34ldjkf432jkjdj343llke")

print(ret)

split中如果帶有分組,會在分組的同時保留被分割內容,如果沒有有分組則不會保留被分割內容   ?""也能不保留被分割內容.

ret = re.sub("\d+","sb","alex83wusir34egon43",4(替換次數,可設定))

print(ret)  #替換,同replace一樣.

ret = re.subn("\d+","sb","alex83wusir34egon32",4(可設定))

print(ret)  #比sub顯示的結果多了替換的次數.

obj = re.compile("\d+")  #將正規表示式編譯成為乙個正規表示式物件.

print(obj)

ret = obj.search("abc12kdk33djfj")#正規表示式物件呼叫search,引數為待匹配的字串

print(ret.group())

finditer 具有迭代功能,節省空間.

ret = re.finditer("\d+","34kfj55j4kkf43fjk")

print(ret)

for i in ret:

print(i.group())

總結:基礎查詢: findall(分組優先顯示)  search   match

替換分割: split(分組保留)  sub  subn

**優化: compile  finditer

分組命名:

html標籤語言

html是一種**

對於瀏覽器來說,瀏覽器和**之間有一種約定.

寫在乙個識別符號之內的**可以有一種獨立的格式.

識別符號: 例 

給分組起名字(?p正規表示式),使用分組的名字(?p=tag)

ret = re.search("<(?p\w+?)>\w+","hello")

print(ret.group())

print(ret.group(tag))

根據分組的索引使用分組\1,1是分組的索引值.

ret=re.search(r"<(\w+?)>\w+","hello")

print(ret.group())

print(ret.group(1))

ret = re.finditer(r"<(\w+?)>\w+","kdjajfkd")

for i in ret:

print(i.group(1))

print(i.group())

re模組及其用法

一 re模組下的常用方法 首先在使用re模組之前,需要引入re模組 import re 1.findall 返回列表,找到所有的匹配項 ret re.findall d asda132eqwe啊阿達456 print ret 132 456 2.search 匹配從左到右第乙個符合,返回乙個變數,通...

re模組的方法

一.re.match re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞。import re text jgood is a handsome boy,he is cool,clever,and so on.m re.match r w s text if m print ...

re模組常用方法

match string pos endpos string是待匹配的字串pos和endpos可選引數,指定字串的起始和終點位置,預設值分別是0和len 字串長度 match 方法 從起始位置開始查詢,一次匹配 re.match pattern,string,flags 0 result re.ma...