python學習之正則

前言

在Python中需要通過正則表達式對字符串進行匹配的時候,可以使用一個模塊,名字爲re
正則用處很多,比如把爬取的數據抽取出來。


re模塊操作

# 導入re模塊
import re

# 使用match方法進行匹配操作
result = re.match(正則表達式,要匹配的字符串)

# 如果上一步匹配到數據的話,可以使用group方法來提取數據
result.group()

re模塊示例(匹配以itcast開頭的語句)

 #coding=utf-8

    import re

    result = re.match("itcast","itcast.cn")

    result.group()

運行結果爲:

itcast

re.match() 能夠匹配出以xxx開頭的字符串


匹配單個字符

字符 功能
. 匹配任意一個字符(非\n)
[] 匹配[]裏的字符
\d 匹配0-9
\D 匹配非0-9
\s 匹配空白,即空格,tap鍵
\S 匹配非空白
\w 匹配單詞字符,即a-zA-Z 0-9 _
\W 匹配非單詞字符

說明:[]裏面的字符不需要加逗號隔開,如果是連續的,比如說1,2,3,4可以寫成,[1-4]

例子:

#coding=utf-8

import re

# 如果hello的首字符小寫,那麼正則表達式需要小寫的h
ret = re.match("h","hello Python") 
print(ret.group())


# 如果hello的首字符大寫,那麼正則表達式需要大寫的H
ret = re.match("H","Hello Python") 
print(ret.group())

# 大小寫h都可以的情況
ret = re.match("[hH]","hello Python")
print(ret.group())
ret = re.match("[hH]","Hello Python")
print(ret.group())
ret = re.match("[hH]ello Python","Hello Python")
print(ret.group())

# 匹配0到9第一種寫法
ret = re.match("[0123456789]Hello Python","7Hello Python")
print(ret.group())

# 匹配0到9第二種寫法
ret = re.match("[0-9]Hello Python","7Hello Python")
print(ret.group())

ret = re.match("[0-35-9]Hello Python","7Hello Python")
print(ret.group())

# 下面這個正則不能夠匹配到數字4,因此ret爲None
ret = re.match("[0-35-9]Hello Python","4Hello Python")
# print(ret.group())

匹配多個字符

在這裏插入圖片描述
注意:匹配多個字符說的都是一個字符出現的次數或頻率

例1

需求:匹配出,變量名是否有效

#coding=utf-8
import re

names = ["name1", "_name", "2_name", "__name__"]

for name in names:
    ret = re.match("[a-zA-Z_]+[\w]*",name)
    if ret:
        print("變量名 %s 符合要求" % ret.group())
    else:
        print("變量名 %s 非法" % name)

運行結果:

變量名 name1 符合要求
變量名 _name 符合要求
變量名 2_name 非法
變量名 __ name __ 符合要求

匹配開頭結尾

在這裏插入圖片描述

例子

需求:匹配163.com的郵箱地址

#coding=utf-8

import re

email_list = ["[email protected]", "[email protected]", "[email protected]"]

for email in email_list:
    ret = re.match("[\w]{4,20}@163\.com", email)
    if ret:
        print("%s 是符合規定的郵件地址,匹配後的結果是:%s" % (email, ret.group()))
    else:
        print("%s 不符合要求" % email)

運行結果:

[email protected] 是符合規定的郵件地址,匹配後的結果是:[email protected]
[email protected] 是符合規定的郵件地址,匹配後的結果是:[email protected]
[email protected] 不符合要求

完善後:

email_list = ["[email protected]", "[email protected]", "[email protected]"]

for email in email_list:
    ret = re.match("[\w]{4,20}@163\.com$", email)
    if ret:
        print("%s 是符合規定的郵件地址,匹配後的結果是:%s" % (email, ret.group()))
    else:
        print("%s 不符合要求" % email)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章