正則指引-括號
之前學習字元組和量詞,量詞是形容字元組的,但是有時候我們希望用量詞來形容多個元素,
我們可以用括號完成,我們可以使用(...)把目標元素括起來,就可以把括號內部看成乙個整體,
在括號外部使用量詞,量詞就會對括號內部的所有元素作用。
用括號改變量詞的作用元素:
re.research(r"^ab+$","ab"); != none //true
re.research(r"^ab+$","abb"); != none //true
re.research(r"^(ab)+$","abb"); != none //false
re.research(r"^(ab)+$","abab"); != none //true
括號的這種能力就做分組,括號還可以配合"|"來使用,使用形式(...|...),
在括號內用|分隔子表示式形成多選分支,分支數量沒有限制,整個多選分支看成單個元素,
只要其中某乙個分支表示式匹配成功,整個表示式就匹配成功,都不能則失敗。
多選結構,一般是(..|..),但是有時候沒有括號,就相當於最外邊有乙個括號,把整體看成一組。
括號有了分組的功能,還有在使用括號之後,正規表示式會儲存每乙個分組真正的文字,
還可以通過group(num),方法來獲取匹配的文字:
re.research(r"(\d)-(\d)-(\d)","2010-08-09");
.group(1) //2010
.group(2) //08
.group(3) //09
在最外層還有乙個隱式的括號,使用group(0)或group()獲得:2010-08-09,
分組的編號是根據開括號的出現順序確定的,第乙個出現編號的就是1,因為始終最外層還有乙個隱式的括號,它的編號才是0.
正規表示式替換:re.sub(pattern,replacement,string)
其中parttern用來匹配被替換的文字表示式,replacement是要替換的文字,string是要被替換的文字。
re.sub("[a-z]"," ","a1b2c3"); // 1 2 3
在替換中使用分組:
re.sub(r"(\d)-(\d)-(\d)",r"\1年\2月\3日","2010-08-09"); // 2023年08月09日
結果是將匹配的123組替換\1\2\3。
反向引用:
能應用分組的子表示式匹配的文字,一般是在匹配完成之後進行,也能在匹配的正規表示式中引用,這種功能叫做反向引用:
re.research(r"^([a-z])\1$","aa"); != none //true
re.research(r"^([a-z])\1$","ab"); != none //false
正則指引 量詞
量詞 指定字元組出現的次數 例如 d d d表示出現三個字元組,我們可以使用量詞表示法 d量詞可以表示字元組出現的次數,還可以表示字元組出現次數的範圍 d 就表示這邊可以匹配出現0到10次之間整數。一般量詞的表示 表示範圍 m x n 表示範圍 m x x可以無窮大 表示範圍 0 x n 還存在一組...
正則指引 斷言
正規表示式中的大多數結構匹配的文字會 出現在匹配的結果中,但是有時候不但關心目標文字的匹配,還要判斷目標文字左右兩側的文字是否符合要求,這種要求的正則裡叫做斷言。常見的斷言有三類 單詞邊界 行的起始 結束的位置 環視。單詞邊界 正則記著 b,它匹配 單詞邊界 的位置。使用情況 bword b bwo...
正則指引 字元組
字元組 在同乙個位子可能出現的各種字元。用正規表示式判斷數字字元 re.search 0123456789 charstr none 其中 0123456789 以字串形式給出正規表示式,他是乙個字元組,表示可以是0到9的任意乙個字元。net中regex.ismatch charstr,012345...