取值範圍的正規表示式 正規表示式 初學

2021-10-12 09:20:42 字數 4243 閱讀 3701

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...