正規表示式匹配規則簡單使用

2021-09-12 07:40:41 字數 4066 閱讀 5911

# 匯入 re 模組   

import re

# re.match() 根據正規表示式從頭開始匹配字串資料

result = re.match(

"itcast"

,"itcast.cn"

)# print 列印結果

print

(result.group())

# 執行結果為:

itcast

**功能.

匹配任意1個字元(除了\n)

[ ]匹配[ ]中列舉的字元, 比如[0-5]表示0,1,2,3,4,5

\d匹配數字,即0-9

\d匹配非數字,即不是數字

\s匹配空白,即 空格,tab鍵

\s匹配非空白

\w匹配非特殊字元,即a-z、a-z、0-9、_、漢字

\w匹配特殊字元,即非字母、非數字、非漢字

**功能

*匹配前乙個字元出現0次或者無限次,即可有可無

+匹配前乙個字元出現1次或者無限次,即至少有1次

?匹配前乙個字元出現1次或者0次,即要麼有1次,要麼沒有

匹配前乙個字元出現m次

匹配前乙個字元出現從m到n次

import re

match_obj = re.match("t.+o", "two")

if match_obj:

print(match_obj.group())

else:

print("匹配失敗")

執行結果:

two

print(match_obj.group())

**功能

^匹配字串開頭

$匹配字串結尾

import re

# 匹配以數字開頭的資料

match_obj = re.match("^\d.*", "3hello")

print(match_obj.group())

執行結果: 3hello

import re

# 匹配以數字結尾

match_obj = re.match(".*\d$", "xxsdf;kj;5")

print(match_obj.group())

**

功能| 管道符

匹配左右任意乙個表示式

(ab)

將括號中字元作為乙個分組

\num引用分組num匹配到的字串

(?p)給分組起別名

(?p=name)

引用別名為name分組匹配到的字串

import re

# 水果列表

fruit_list =[,

"banana"

,"orange"

,"pear"

]for value in fruit_list:

match_obj = re.match(

, value)

if match_obj:

print

(match_obj.group())

# print("%s是我想要的" % match_obj.group())

# else:

# print("%s不是我要的" % value)

>>

>

pear

需求:匹配出163、126、qq等郵箱

import re

match_obj = re.match("[a-za-z0-9_]@(163|126|qq|sina|yahoo)\.com", "[email protected]")

if match_obj:

print(match_obj.group())

# 獲取分組資料

print(match_obj.group(1))

else:

print("匹配失敗")

match_obj = re.match(r"<([a-za-z1-6]+)>.*", "hh")

if match_obj:

print(match_obj.group())

else:

print("匹配失敗")

# 

# \num 引用分組num匹配到的字串

match_obj = re.match("<([a-za-z1-6]+)><([a-za-z1-6]+)>.*", "

")if match_obj:

print(match_obj.group())

else:

print("匹配失敗")

#需求:匹配出

#?p取名 , ?p=name呼叫

match_obj = re.match(

"<(?p[a-za-z1-6]+)><(?p[a-za-z1-6]+)>.*","

")if match_obj:

print

(match_obj.group())

else

:print

("匹配失敗"

)

需求:匹配出水果的個數

import re

# 1.pattern: 正規表示式

# 2.string: 要匹配的字串

match_obj = re.search("\d+", "水果有20個 其中蘋果10個")

if match_obj:

# 獲取匹配結果資料

print(match_obj.group())

else:

print("匹配失敗")

執行結果: 20

需求:匹配出多種水果的個數

import re

result = re.findall("\d+", "蘋果10個 鴨梨5個 總共15個水果")

print(result)

執行結果: ['10', '5', '15']

import re

# pattern: 正規表示式

# repl: 替換後的字串

# string: 要匹配的字串

# count=0 替換次數,預設全部替換 , count=1根據指定次數替換

# match_obj:該引數系統自動傳入

def add(match_obj):

# 獲取匹配結果的資料

value = match_obj.group()

result = int(value) + 1

# 返回值必須是字串型別

return str(result)

result = re.sub("\d+", add, "閱讀數:10")

print(result)

需求:切割字串"貂蟬,楊玉環:西施,王昭君"

import re

# 1. 正則

# 2. 要匹配的字串

# maxsplit=1 分割次數, 預設全部分割

result = re.split(",|:", my_str, maxsplit=1)

print(result)

執行結果: ['貂蟬', '楊玉環:西施,王昭君']

比如

match_obj = re.match(r"<([a-za-z1-6]+)>.*", "hh")
python中字串前面加上 r 表示原生字串(rawstring)

如果不使用r,默寫情況下匹配時候需要加上反斜槓

正規表示式 匹配規則

一切從最基本的開始。模式,是正規表示式最基本的元素,它們是一組描述字串特徵的字元。模式可以很簡單,由普通的字串組成,也可以非常複雜,往往用特殊的字元表示乙個範圍內的字元 重複出現,或表示上下文。例如 once這個模式包含乙個特殊的字元 表示該模式只匹配那些以once開頭的字串。例如該模式與字串 on...

正規表示式 匹配規則

一切從最基本的開始。模式,是正規表示式最基本的元素,它們是一組描述字串特徵的字元。模式可以很簡單,由普通的字串組成,也可以非常複雜,往往用特殊的字元表示乙個範圍內的字元 重複出現,或表示上下文。例如 once這個模式包含乙個特殊的字元 表示該模式只匹配那些以once開頭的字串。例如該模式與字串 on...

正規表示式教程 正規表示式匹配規則 6

正規表示式教程 正規表示式匹配規則 6 2007 05 11 08 28 基本模式匹配 一切從最基本的開始。模式,是正規表示式最基本的元素,它們是一組描述字串特徵的字元。模式可以很簡單,由普通的字串組成,也可以非常複雜,往往用特殊的字元表示乙個範圍內的字元 重複出現,或表示上下文。例如 once 這...