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...