正規表示式

2021-08-10 06:34:25 字數 2525 閱讀 5661

什麼是正規表示式?

正規表示式是一種用特殊的字串制定的規則,通過制定好的規則,可以在所有字串中查詢自己想要的資料,對資料進行篩選和過濾。

正規表示式用法?

1)依次拿出來表示式和文字進行對比

2)判斷表示式和文字是否完全匹配成功,如果匹配成功,說明找到和規則相同的字串,如果乙個字串不匹配,就匹配失敗

用法:1)使用內建庫re模組,進行正則匹配

2)構造正規表示式

3)利用正則函式進行匹配

正規表示式的常用語法:

在這裡介紹4中最常用的正則函式:

1)match()函式:

從字串的開始位置開始匹配,如果匹配到對應的正規表示式的資料,就說明匹配成功,返回匹配到的資料;如果不是以正規表示式開頭的,匹配失敗,匹配到第乙個符合正規表示式條件的。

引數有兩個(正規表示式,進行匹配到的分組資訊)

import re

pattern = re.compile(r'hello', re.i) #r 原樣字串, re.i匹配全拼不區分大小寫

string = 'hello, word'

result = re.match(pattern, string)

if result:

# .group()獲取匹配到的分組資訊

print result.group()

else:

print '匹配失敗'

2)search()函式:

從大的字串中匹配符合正則的字串,無論字串在什麼位置,只要有就返回找到的內容,如果沒有匹配到就返回none

3)findall()函式

返回乙個列表,列表中存放的是所有符合正規表示式的字串

4)sub()函式

替換符合正規表示式的字元:引數1:正規表示式

引數2:替換後的內容

引數3:要進行替換的內容

下面是正則的幾個練習:

1)正則匹配手機號:

# -*- coding:utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

import re

phone = "13545678912"

pattern = re.compile("^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d$")

result = pattern.match(phone)

if result:

print "是手機", result

else:

print "不是手機"

print result

2)匹配郵箱

# -*- coding:utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

import re

email = "[email protected]"

pattern = re.compile("([a-za-z0-9_-])+@([a-za-z0-9_-])+(.[a-za-z0-9_-])+")

result = pattern.match(email)

if result:

print "是郵箱"

else:

print "不是郵箱"

print result

3)遮蔽關鍵字

# -*- coding:utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

import re

bad_words = [

("毛\s*小\s*明", "毛*明"),

("張小濤", "張*濤"),

("宋小美", "宋*美"),

]content = "毛 小 明輔導張小濤的兄弟宋小美學習python"

for bad_word in bad_words:

pattern = re.compile(bad_word[0])

content = pattern.sub(bad_word[1], content)

print content

常用的正則:

+匹配字元乙個或乙個以上

\d匹配整數

匹配10次

至少匹配1次,至多匹配 5次

| 條件,表示或

() 多個條件用()

^ 以***開頭

sub:正則替換內容

\s 匹配空格,tab鍵....

*表示0個或0個以上

$ 以 結尾

正規表示式 正規表示式 總結

非負整數 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正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...