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)
執行結果
# splitdemo_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.正規表示式 又稱規則表示式,所謂正規表示式,就是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元 及這些特定字元的組合,組合乙個 規則字串 這個 規則字串 用來表達對字串的一種...