字元組:在同乙個位子可能出現的各種字元。
用正規表示式判斷數字字元:
re.search("[0123456789]",charstr) != none
其中[0123456789]以字串形式給出正規表示式,他是乙個字元組,表示可以是0到9的任意乙個字元。
net中regex.ismatch(charstr,"[0123456789]");
在預設情況下,search(pattern,string)只會判斷某個子串能否匹配pattern,只要pattern能匹配string中的一部分,
也認為是匹配成功,為了測整個string是否能匹配pattern,要在pattern兩端加上^和$.他們表示定位字串的起始和結束位置,
這樣就能保證,只有是整個string都可以由pattern匹配,才算成功。
像[0123456789]這個字元組,還可以使用範圍表示法:[0-9]
在字元組中:「-」表示範圍,一般根據字元對應的乙個碼值,碼值小的在「-」前面,大的在後面。
上面的例子中,「-」用來表示範圍,並不能匹配橫線字元,這一類字元叫做元字元,像[、]、^、$都是元字元。
那麼當我們需要匹配這些特殊的元字元的時候,需要進行轉義處理。
像「-」字元,如果是緊挨著「[」,會認為是普通字元,其他的情況都是元字元,可以使用「\」,對元字元進行轉義:
re.search("^[0\\-9]$","3") != none //false
上面的「\」字元本身會聯合其他的例如「\n \r」等來使用,單獨使用也需要「\\」來進行轉義。
使用原生字串: re.search(r"^[0\-9]$","3") != none ,在字串前面加上r。就可以不用「\\」來表示"\"了。
排除型字元組:[^...]:表示當前位置,匹配乙個沒有列出的字元。
[^0-9]:表示匹配乙個不是數字的字元
字元組簡記法:
常見的有:
\d:[0-9]
\w:[0-9a-za-z] 這個還包括乙個下劃線
\s:[ \t\r\n\v\f]
對應的排除型字元組簡記法:
\d :與\d互補
\w :與\w互補
\s :與\s互補
最簡單的應用:[\s\s]組合使用,匹配所有的字元。
正則指引 量詞
量詞 指定字元組出現的次數 例如 d d d表示出現三個字元組,我們可以使用量詞表示法 d量詞可以表示字元組出現的次數,還可以表示字元組出現次數的範圍 d 就表示這邊可以匹配出現0到10次之間整數。一般量詞的表示 表示範圍 m x n 表示範圍 m x x可以無窮大 表示範圍 0 x n 還存在一組...
正則指引 斷言
正規表示式中的大多數結構匹配的文字會 出現在匹配的結果中,但是有時候不但關心目標文字的匹配,還要判斷目標文字左右兩側的文字是否符合要求,這種要求的正則裡叫做斷言。常見的斷言有三類 單詞邊界 行的起始 結束的位置 環視。單詞邊界 正則記著 b,它匹配 單詞邊界 的位置。使用情況 bword b bwo...
正則指引 括號
正則指引 括號 之前學習字元組和量詞,量詞是形容字元組的,但是有時候我們希望用量詞來形容多個元素,我們可以用括號完成,我們可以使用 把目標元素括起來,就可以把括號內部看成乙個整體,在括號外部使用量詞,量詞就會對括號內部的所有元素作用。用括號改變量詞的作用元素 re.research r ab ab ...