對上述**段,若使用+或*為貪婪匹配,即盡可能匹配多的字元:
<.*> 會匹配整段:
通過在 *、+ 或 ? 限定符之後放置 ?,使該表示式從"貪心"表示式轉換為"非貪心"表示式或者最小匹配
<.*?> 則只匹配到:
.匹配除了\n換行符之外的任一單字元
對乙個正規表示式模式或部分模式兩邊新增圓括號將導致相關匹配儲存到乙個臨時緩衝區中,所捕獲的每個子匹配都按照在正規表示式模式中從左到右出現的順序儲存。緩衝區編號從 1 開始,最多可儲存 99 個捕獲的子表示式。每個緩衝區都可以使用 \n 訪問,其中 n 為乙個標識特定緩衝區的一位或兩位十進位制數。可以使用非捕獲元字元 ?:、?= 或 ?! 來重寫捕獲,忽略對相關匹配的儲存。
反向引用的最簡單的、最有用的應用之一,是提供查詢文字中兩個相同的相鄰單詞的匹配項的能力。以下面的句子為例:
is is the cost of of gasoline going up up
查詢重複的單詞:
var str = "is is the cost of of gasoline going up up";
var patt1 = /\b([a-z]+) \1\b/ig;
document.write(str.match(patt1));
捕獲的表示式,正如 [a-z]+ 指定的,包括乙個或多個字母。正規表示式的第二部分是對以前捕獲的子匹配項的引用,即,單詞的第二個匹配項正好由括號表示式匹配。\1 指定第乙個子匹配項。
單詞邊界元字元確保只檢測整個單詞。否則,諸如 "is issued" 或 "this is" 之類的片語將不能正確地被此表示式識別。
正規表示式後面的全域性標記 g 指定將該表示式應用到輸入字串中能夠查詢到的盡可能多的匹配。
表示式的結尾處的不區分大小寫 i 標記指定不區分大小寫。
多行標記指定換行符的兩邊可能出現潛在的匹配。
輸出結果為: is is,of of,up up
# span()函式 返回乙個元組,表示(start, end)
re.match(pattern, string, flags=0) :嘗試從字串的起始位置匹配乙個模式,如果不是從起始位置匹配成功的話,match()就返回none
re.search(pattern, string, flags=0):掃瞄整個字串並返回第乙個成功的匹配。
這兩個方法的引數一樣:
注意兩者的區別。
re.sub(pattern, repl, string, count=0):用於替換字串中的匹配項。
引數:
python基礎(三) 正規表示式
import re 匹配abc m re.findall abc aabbccabccbaccbaaabcabc print m 匹配一位數字,digit m re.findall d 123abc1a2b3c1b2c3a print m 匹配四位數字 m re.findall d d d d 12...
MySQL 基礎語法 三 正規表示式
模式描述 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束位置。如果設定了regexp 物件的 multiline 屬性,也匹配 n 或 r 之前的位置。匹配除 n 之外的任何單個字元。要匹配包括 n 在內的任何字...
JavaScript學習之三 正規表示式
一 簡單模式 元字元 一定出現n次 至少出現n次但不超過m次 至少出現n次 貪婪的 先匹配整個字串,如果沒有匹配,去掉最後字串的最後乙個字元,並再次嘗試,依次。支配量詞 只嘗試匹配整個字串。貪婪惰性 支配描述?出現0次或一次 出現零次或多次 任意次 出現一次或多次 至少一次 一定出現n次?至少出現n...