可有可無 正則 正規表示式 初學

2021-10-14 19:13:04 字數 4243 閱讀 4047

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

匹配分組

# 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))

可有可無 正則 正則的基本概念

作用 處理字串 搜尋,替換,切分等 寫法 1.js物件風格 let re new regexp 正規表示式 選項 let re new regexp 1 3 9 d g global 全域性匹配,找到所有 2.perl風格 let re 正規表示式 選項 let re 1 3 9 d g d dig...

正規表示式初學

今天第一次真正好好學了下這個正規表示式,還是看的鳥哥私房菜,感覺收穫很大啊,閒話不多說了。下面是re字元的使用 word 待搜尋的字元word在字串首行 範例 搜尋首行為 開始的那一行,並列出行號 grep n a.txt word 待 搜尋的字元word在字串行尾 範例 將行尾為!的那一行列印出來...

初學正規表示式

初識正則 剛聽到正規表示式,很懵,正規表示式,數學公式?那和python有什麼關係。總之,一聽名字就知道不簡單。1.正規表示式 又稱規則表示式,所謂正規表示式,就是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元 及這些特定字元的組合,組合乙個 規則字串 這個 規則字串 用來表達對字串的一種...