正規表示式是一種字串模式,用來對某些規則的文字內容進行處理。利用字串構成成的資料結構,來完成對文字內容的匹配。
經常可以看到正規表示式的句子裡包含了一些\d、\w和()之類的符號,這些特殊格式的符號可以看做正則結構中的元素,這些符號也成之為元字元,下面介紹下這些元字元的作用。
下面列出正則中常用元字元及表示意思,這些通用元字元的使用在不同語言中表達作用是相同的。
匹配字元內容
符號代表意思
使用場景
\d數字0-9
\d 匹配單個數字,1、2、3
\d非數字
\d 匹配單個非數字,a、-、'
\w字母、數字、下劃線
\w 匹配單個字母、數字、下劃線,a、1、_
\w非字母、數字、下劃線
\w 匹配單個非字母、數字、下劃線,
m次到n次
\d 匹配數字,2、12、123
n次\d 匹配數字,12
n次及n次以上
\d 匹配數字,12、123、1234
有了表達次數的元字元後,上述形式的字串模板寫法就簡單些了
\d --------- 123
\w\s --------- hello world
但是只有萬用字元號、和次數的元字元還不足以應對常用場景:
string line = "hello world!"
這裡如果要匹配整個字串內容,或者只匹配hello這乙個單詞,也就是需要對字串的位置進行校驗,下面列出匹配位置的元字元
分組符號
在繼續之前,首先介紹下"()",這裡的小括號"()",稱之為分組,分組匹配的內容可以在後續的正則中重複使用,只需要指定分組的序號即可。分組的序號是從左往右以此遞增的示例:
^(\w)\s\1\b --------- long long ago --- > 匹配"long long"
分組的作用,除了提供後續引用之外,也用作捕獲組,即正則中分組對應的匹配內容示例:
import re
reg = "(\w)(\w)"
print(re.match(reg,"hello").groups())
輸出結果:
('he', 'llo')
hello
由例子中可以看出這裡的()分組捕獲的匹配內容
有捕獲分組,自然也有非捕獲分組,在分組開頭新增?:,表示該分組對應內容為非捕獲分組示例:
import re
reg = "(?:\w)(\w)"
print(re.match(reg,"hello").groups())
print(re.match(reg,"hello").group(1))
輸出結果:
('llo',)
llo
其中分組的序號由"("出現的順序確定,第乙個"("序號為1,從左往右遞增示例:
import re
reg = "((?:\w)(\w))"
print(re.match(reg,"hello").groups())
print(re.match(reg,"hello").group(1))
print(re.match(reg,"hello").group(2))
輸出結果:
('hello', 'llo')
hello
llo
匹配位置
符號代表意思
使用場景
^字串開始位置
(^)abc 匹配字串開頭位置,a前面的位置
$字串結束位置
abc($) 匹配字串結束位置,c後面的位置
\b單詞(\w)與非單詞之間的位置
a(\b)= 匹配"a"與"="之間的位置
\b字元與字元之間的位置
a(\b)b 匹配"a"與"b"之間的位置
這裡的元字元只是匹配位置,通過使用位置元字元來限制、過濾指定位置條件的內容。
^(\w)\b ----- hello world -> 匹配內容為: hello
這裡的匹配過程是:
其他元字元
符號代表意思
使用場景
匹配範圍
[a-za-z] 匹配單個英文本母
^在上面的匹配位置元字元中,僅僅介紹了匹配字串開頭位置的作用,這裡另外乙個作用就是放在範圍元字元中,起到取反的作用
[^a-d] 匹配單個非a,b,c,d四個英文本母之外的字元
\轉義元字元
1\+ 匹配"1+"
|分支條件
ab|cd 匹配ab、cd
正規表示式 元字元
現在你已經知道幾個很有用的元字元了,如 b 還有 d 當然還有更多的元字元可用,比如 s 匹配任意的空白符,包括空格,製表符 tab 換行符,中文全形空格等 w匹配字母或數字或下劃線或漢字等。ba w b 匹配以字母a 開頭的單詞 先是某個單詞開始處 b 然後是字母a 然後是任意數量的字母或數字 w...
正規表示式 元字元
元字元 描述.點 匹配任何單個字元。例如正規表示式r.t匹配這些字串 rat rut r t,但是不匹配root。匹配行結束符。例如正規表示式weasel 能夠匹配字串 he s a weasel 的末尾 但是不能匹配字串 they are a bunch of weasels.匹配一行的開始。例如...
正規表示式元字元
l 基本元字元 元字元說明 匹配任意單個字元 邏輯或操作符 定義乙個字元集合,匹配該集合中的乙個字元 對字元集合求非 是對整個集合求非,而不是緊挨著 符號的字元 在字元集合中定義乙個區間。如 a za z 對下乙個字元轉義。比如 n表示換行。數量元字元 元字元說明 匹配前乙個字元 子表示式 零次或多...