pattern物件的方法,分組和貪婪非貪婪模式

2021-10-02 19:23:11 字數 1736 閱讀 6857

(1)match方法:預設從頭開始匹配,只匹配一次,返回乙個match物件

match物件 = pattern.match(

string,#要匹配的目標字串

start,#要匹配目標字串的起始位置(可選)

end#結束位置(可選)

)(2)search 方法:全文匹配,只匹配一次,返回乙個match物件

match = pattern.search(

string,#要匹配的目標字串

start,#要匹配目標字串的起始位置(可選)

end#結束位置(可選)

)(3)findall方法:全文匹配,匹配多次,返回乙個list

list= pattern.findall(

string,#要匹配的目標字串

start,#要匹配目標字串的起始位置(可選)

end#結束位置(可選)

)(4)finditer方法:全文匹配,匹配多次,返回乙個迭代器,迭代器裡面儲存的是match物件

迭代器= pattern.findall(

string,#要匹配的目標字串

start,#要匹配目標字串的起始位置(可選)

end#結束位置(可選)

)什麼是迭代器?

當有一種資料或者內容比較多的時候,可以將其分裝迭代器。—通過for迴圈來使用這個迭代器就可以獲取其中的每乙個資料。

有__next__和__iter__。

可迭代物件?有__iter__方法物件。

strbytes

list

dict

tuple

檔案流需求:列印輸入檔案內容,同時輸出行號。

(5)split:安正則方法表示內容進行分割字串,返回分割後子串list

pattern.split(

string,

maxsplit#指定最大分隔次數,預設全部分隔,可選

)

(6)sub:按照正則表示的內容替換字串(重要的)

pattern.sub(

repl, #替換成什麼

string,#替換什麼

count#替換次數,可選,預設全部替換

)--->替換後的字串

(1)repl字串

import re

p = re.compile(r'(\w+) (\w+)')

s = 'hello 123,hello 456'

#提前用p去匹配目標串,找到能匹配出來的內容,就是替換找出來的這個內容的。

print(p.sub(r'hello world',s))#使用『hello world'替換'hello 123'和'hello 456'

print(p.sub(r'\2 \1',s))#引用分組

(2)當repl是乙個函式的時候,這個函式是有要求的:

a、必須帶乙個引數,這個引數其實就是提前用p去匹配目標串,得到match物件。

b、這個函式必須有返回值,返回值是乙個字串,這個字串將來就作為替換的內容。

分組在正規表示式中就是用()來表示的。乙個括號就是乙個分組。分組的作用主要有以下兩個:

(1)篩選特定內容

(2)引用分組

(1)貪婪是用*來控制,python預設是貪婪模式,所以預設所有的數量控制符都是取所能匹配的最大值。

(2)非貪婪是用?來控制的,?放在數量控制符後面,表示數量控制符匹配最小的次數。

Java的Pattern和Matcher使用

這裡借網易2017年的筆試題進行介紹。牛牛拿到了乙個藏寶圖,順著藏寶圖的指示,牛牛發現了乙個藏寶盒,藏寶盒上有乙個機關,機關每次會顯示兩個字串 s 和 t,根據古老的傳說,牛牛需要每次都回答 t 是否是 s 的子串行。注意,子串行不要求在原字串中是連續的,例如串 abc,它的子串行就有 8 種。pu...

物件和方法

描述類具有的功能 許可權修飾符 返回值型別 方法名 形參列表 public void eat public void sleep int hour public string getname public string getnation string nation 是否有返回值 許可權修飾符 4種...

按list物件的某個方法返回值分組

通過list裡物件的某個方法返回值,對list進行分組。按list物件的某個方法返回值分組 param list 待分組的list集合 param methodname 物件方法名稱 param methodargs 物件方法的引數 param 物件 param 分組key的資料型別 return ...