import re
demo_data = re.match(r"hello", "hello,武漢加油")
print(demo_data) # 有物件則意味著正規表示式提取資料成功
執行結果
# 正則滿足條件提取資料成功,返回值是乙個物件,不滿足,none空
匹配單個字元
import re
demo_data = re.match(r"哈利波特d", "哈利波特3")
# [1-7],[a-d1-7a-z],w # 符合uniccode很少使用
匹配多個字元
import re
# {}用來規範前乙個單位的數量範圍
print(re.match(r"哈利波特d","哈利波特13").group())
# d→表示d可以是乙個或者兩個
# {}用來精確前乙個單位的數量必須是多少位
print(re.match(r"d","13812345678"),group())
# 座機號碼:0731區號-66668888乙個可有可無存在就乙個要不就不存在
re.match(r"0731-?d","0731-66668888").group()
# **號碼中的-不論有或者無都能匹配
# 區號三位數,四位數, - 七位數八位數
re.match(r"d-?d","025-1234567").group()
# *可有可無 存在可以無限
demo_data = """hello,
武漢加油,
湖北加油
乙個案列:去判斷乙個變數名是否是符合規範
import re
while true:
name = input("請輸入乙個變數名:") # 既要開頭也要匹配結尾
# match是預設自帶^
demo1 = re.match(r"^[a-za-z_][a-za-z0-9_]*$",name)
# print(demo1.group())
if demo1: # true
print("%s是乙個符合規範的變數名---" % name)
else:
print("%s不是乙個符合規範的變數名***" % name)
匹配分組
# 去匹配乙個qq郵箱
import re
while true:
email_data = re.match(r"d@[qq].com","email) # .轉義"."
if email_data:
print("%s是乙個符合規範的qq郵箱位址" % email)
else:
print("%s不是乙個符合規範的qq郵箱位址" % email)
# 163 qq 分組
email_data = re.match(r"[a-za-z0-9_]@(qq|163).com$", email)
# or與|乙個意思
import re
while true:
email_data = re.match(r"[a-za-z0-9_]@(qq|163).com$", email)
print(email_data.group(1)) # group(1)分組取值
執行結果
qq
匹配分組
# "
print(re.match(r".*",demo_data).group())
# 1代表第乙個分組匹配到的資料必須和他一樣
# 分組太多
print(re.match(r".*",demo_data).group())
import re
# re.match()預設自帶^
print(re.search(r"d+",demo_data).group())
print(re.findall(r"d+",demo_data))
執行結果
['123456','666','888']
findall也可用來爬取**
# sub sub替換
print(re.sub(r"d+","124",demo_data)) # "124"替換內容
執行結果
def add(obj):
num1 = obj.group()
num2 = int(num1)+1
return str(num2)
print(demo1)
print(demo2)
執行結果
# split
demo_data = "hello,武漢加油,湖北加油》中國加油"
print(re.split(r",|>",demo_data)
執行結果
['hello','武漢加油','湖北加油','中國加油']
demo_data = "cdemodemo"
print(re.match(r".+",demo_data).group())
執行結果
cdemodemo
案例
匹配0-100之間的數字
print(re.match(r'd+', '8').group())
print(re.match(r'd', '88').group())
print(re.match(r'[1-9]?d$', '08').group())
print(re.match(r'[1-9]?d$|100', '100').group())
匹配163 126 qq 郵箱
print(re.match(r'[a-za-z0-9]@163.com$', '[email protected]').group())
print(re.match(r'[a-za-z0-9]@(163|126|qq).com$', '[email protected]').group())
print(re.match(r'[a-za-z0-9]@(163|126|qq).com$', '[email protected]').group())
print(re.match(r'[a-za-z0-9]@(163|126|qq).com$', '[email protected]').group())
提取區號和**號碼
ret = re.match(r'([^-]*)-(d+)', '010-12345678')
print(ret.group(1))
print(ret.group(2))
正規表示式 正規表示式 總結
非負整數 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...
C 正規表示式取值
table cellspacing 0 cellpadding 2 width 682 border 0 style width 682px height 324px tr height 10 td colspan 2 font face 宋體 font td tr tr height 30 td ...
正規表示式 表示式
網域名稱 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...