正規表示式 學習小結

2021-09-25 17:50:53 字數 2137 閱讀 1263

3個月沒看之前的**,回過頭來一瞅,這還是自己寫的**嗎?一臉懵,尤其是正規表示式這種相對較為晦澀的語言,記錄一下曾經使用過的那些正規表示式。當時學習正則表達是主要是要提取一些非結構化文字中的資訊,期望將其能夠結構化,即提取需求字段。

正規表示式的表示式全集以及常用正規表示式可參照該鏈結(目前見過最簡潔的正規表示式全集): 對照該鏈結看之前寫過的正規表示式就相對一目了然。

import re
根據匹配模式查詢相應的字串

text =

"當山峰沒有稜角的時候 當河水不再流 當時間停住日夜不分 當天地萬物化為虛有"

# 匹配text中的「當」字

reg =

"當(.*)"

re_search = re.search(reg, text)

# 查詢結果

res = re_search.group(

)# 結果為:當山峰沒有稜角的時候 當河水不再流 當時間停住日夜不分 當天地萬物化為虛有

# 匹配text中的「當」字,遇到下乙個「當」字停止

reg =

"當([^當]*)"

g_search = re.search(reg, text)

.group(

)print

(g_search)

# 結果為:當山峰沒有稜角的時候

text_ = re.split(

" ", text)

# 結果為:['當山峰沒有稜角的時候', '當河水不再流', '當時間停住日夜不分', '當天地萬物化為虛有']

# 匹配text中的所有「當」字,並且按照list儲存資訊

reg =

"當([^當]*)"

# 將text中的空格替換成空字串

text = re.sub(

" ",

"", text)

f_search = re.finditer(reg, text)

res =

for dang_ in f_search:))

print

(res)

# 結果為:['當山峰沒有稜角的時候', '當河水不再流', '當時間停住日夜不分', '當天地萬物化為虛有']

正向肯定預查:表示沿著從左到右的順序進行匹配

反向肯定預查:表示沿著從右到左的順序進行匹配

# 非獲取匹配

reg =

"(當)(?=山峰)([^當]*)"

# 正向肯定預查

reg_1 =

"(當)(?:山峰)([^當]*)"

g_search = re.search(reg, text)

.group(

)# 結果為: 當山峰沒有稜角的時候

# 使用group獲取匹配的group的時候從1開始計數,0或者不填寫都表示匹配的所有字串

g_search = re.search(reg, text)

.group(2)

# 結果為: 山峰沒有稜角的時候

g_search = re.search(reg_1, text)

.group(2)

# 結果為: 沒有稜角的時候

reg =

"(?<=山峰)([^當]*)"

# 反向肯定預查

g_search = re.search(reg, text)

.group(

)# 結果為: 沒有稜角的時候

reg =

"(當)(?!山峰)(.*)"

# 正向否定預查

g_search = re.search(reg, text)

.group(

)# 結果為: 當河水不再流當時間停住日夜不分當天地萬物化為虛有

5. text.find() / text.rfind()
# 獲取某個字元在字串中第一次出現的索引值

find_c =

"不"print

(text.find(find_c)

)# 13

# 反向獲取某個字元第一次出現的索引值

print

(text.rfind(find_c)

)# 23

正規表示式學習小結

常用語法表 語法 描述.匹配任何字元,除了換行符 w匹配總目,數字及下劃線 w匹配不是字母,數字及下劃線的字元 s匹配任意空白字元,等價於 t n r f s匹配任意非空字元 d匹配任意數字,等價於 0 9 d匹配任意非數字的字元 a匹配字串開頭 b匹配 乙個字邊界,即字與空格間的位置 b非字邊界匹...

fei 正規表示式 正規表示式小結

常用的元字元常用的反義 常用的限定符 語法 說明 語法 說明 語法 說明 w 匹配字母或數字或下劃線或漢字 w匹配任意不是字母 數字 下劃線 漢字的字元 重複零次或者更多次 s匹配任意的空白字元 s匹配任意不是空白符的字元 重複一次或更多次 d匹配數字 d匹配任意非數字的字元 重複零次或一次 b匹配...

正規表示式小結

正規表示式 regex 英 red eks 1,d d d d或者是 d 表示匹配4位數的數字。2.說明。這些可被稱作元字元。匹配除換行符以外的任意字元1 jk2yh jj w數字字母漢字下劃線 bst456 5ghgtft s匹配任意的空白符 space table鍵和半全形空格 d匹配數字 di...