正規表示式是乙個特殊的字串行,它能幫助你方便的檢查乙個字串是否與某種模式匹配。
所謂特殊字元,就是一些有特殊含義的字元,如上面說的runoo*b
中的*
,簡單的說就是表示任何字串的意思。如果要查詢字串中的*
符號,則需要對*
進行轉義,即在其前加乙個\
:runo\*ob
匹配runo*ob
。
許多元字元要求在試圖匹配它們時特別對待。若要匹配這些特殊字元,必須首先使字元"轉義",即,將反斜槓字元\
放在它們前面。下表列出了正規表示式中的特殊字元:
特別字元
匹配自身
.匹配任意除換行符\n外的單字元
在dotall模式中也能匹配換行符
\轉義字元,使後乙個字元改變原來的意思
*匹配前乙個子表示式0或多次
+匹配前乙個子表示式1次或無限次
?匹配前乙個子表示式0次或1次,或指明乙個非貪婪限定符
^匹配輸入字串的開始位置,除非在方括號表示式中使用,
當該符號在方括號表示式中使用時,表示不接受該方括號表示式中的字元集合
$匹配輸入字串的結尾位置。如果設定了 regexp 物件的
multiline 屬性,則 $ 也匹配'\n'或'\r'
|或。匹配|左右表示式任意乙個,
從左到右匹配,如果|沒有包括在()中,
則它的範圍是整個正規表示式
{}匹配前乙個字元m次,匹配前乙個字元m至n次,
若省略n,則匹配m至無限次
字符集。對應的位置可以是字符集中任意字元。字符集中的字元可以逐個列出,
也可以給出範圍,如[abc]或[a-c]。[^abc]表示取反,即非abc。
所有特殊字元在字符集中都失去其原有的特殊含義。
用反斜槓轉義恢復特殊字元的特殊含義。
()標記乙個子表示式的開始和結束位置。子表示式可以獲取供以後使用
限定符用來指定正規表示式的乙個給定元件必須要出現多少次才能滿足匹配。
*=+=
?= 匹配確定的n次
至少匹配n次 'o' = 'o+' and 'o' = 'o*'。
*
和+
限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的後面加上乙個?
就可以實現非貪婪或最小匹配。
非貪婪:如果您只需要匹配開始和結束 h1 標籤,下面的非貪婪表示式只匹配
re.match(pattern, string, flags=0)
re.match嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match()就返回none。
pattern 匹配的正規表示式
string 要匹配的字串。
flags 標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等等
如果匹配成功,re.match方法返回乙個匹配的物件,否則返回none。
可以使用group(num) 或 groups() 匹配物件函式來獲取匹配表示式。
group(num=0)
匹配的整個表示式的字串,group() 可以一次輸入多個組號,在這種情況下它將返回乙個包含那些組所對應值的元組。
groups()
返回乙個包含所有小組字串的元組,從 1 到 所含的小組號。
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...