Python基礎 正規表示式

2021-09-11 06:15:03 字數 4201 閱讀 2477

一、什麼是正規表示式?

正規表示式其實就是乙個用來匹配和提取字串的工具

簡單來說就是:在一堆東西裡面提取我們想要的內容

正規表示式的模組是:re

1、re.findall():將符合規則的字串以列表形式返回
import re

s = 'python123'

r = re.findall("python", s) #['python']

print(r)

二、元字元:. ^ $ {} * + ? | [ ]

1、. 萬用字元,除\n

import re

s1 = "python123"

s2 = "puthon123\n"

s3 = "puthon123\r"

r1 = re.findall(".", s1)

print(r1)

r2 = re.findall(".", s2)

print(r2)

r3 = re.findall(".", s3)

print(r3)

#修飾符re.s可以使.匹配包括換行在內的所有字元

r4 = re.findall(".", s2, re.s)

print(r4)

'''執行結果:

['p', 'y', 't', 'h', 'o', 'n', '1', '2', '3']

['p', 'u', 't', 'h', 'o', 'n', '1', '2', '3']

['p', 'u', 't', 'h', 'o', 'n', '1', '2', '3', '\r']

['p', 'u', 't', 'h', 'o', 'n', '1', '2', '3', '\n']

'''

2、^ 脫字元
import re

s1 = "love123\nloveyou\nhhh"

print(s1)

r = re.findall("^love", s1) #修飾符re.m表示可以多行匹配

print(r)

r = re.findall("^love", s1, re.m)

print(r)

'''執行結果:

love123

loveyou

hhh['love']

['love', 'love']

'''

3、$ 結束位置
import re

s1 = "python\npyt\nthon"

print(s1)

r = re.findall("pyt$", s1)

print(r) #

r = re.findall("thon$", s1, re.m)

print(r) # ['thon', 'thon']

'''執行結果:

python

pytthon

['thon', 'thon']

'''

4、 * + ?:匹配前面的表示式次數分別為(0-n)(1-n)(0-1)
import re

s1 = "z\nzo\nzoo"

r = re.findall("zo*", s1, re.m)

print(r) # ['z', 'zo', 'zoo']

r = re.findall("zo+", s1, re.m)

print(r) # ['zo', 'zoo']

r = re.findall("zo?", s1, re.m)

print(r) # ['z', 'zo', 'zo']

5、{}控制表示式次數
import re

s1 = "z\nzo\nzoo"

r = re.findall("zo*", s1, re.m)

print(r) # ['z', 'zo', 'zoo']

r = re.findall(r"zo", s1, re.m)

print(r)

r = re.findall("zo+", s1, re.m)

print(r) # ['zo', 'zoo']

r = re.findall("zo", s1, re.m)

print(r)

r = re.findall("zo?", s1, re.m)

print(r) # ['z', 'zo', 'zo']

r = re.findall("zo", s1, re.m)

print(r) # ['z', 'zo', 'zo']

r = re.findall("zo", s1, re.m)

print(r) # ['zoo']

6、[ ]字元組:控制的是匹配內容
import re

s = "test\ntesting\nzoo"

r = re.findall("[eio]", s, re.m)

print(r)

r = re.findall("[e-o]", s, re.m) # efghijklmno

print(r) # ['e', 'e', 'i', 'n', 'g', 'o', 'o']

# ^r = re.findall("^[eio]", s, re.m)

print(r) #

r = re.findall("[^eio]", s, re.m) # 匹配未包含的字元範圍

print(r) # ['t', 's', 't', '\n', 't', 's', 't', 'n', 'g', '\n', 'z']

r = re.findall("[^e-o]", s, re.m) # 匹配未包含的字元範圍

print(r) # ['t', 's', 't', '\n', 't', 's', 't', '\n', 'z']

7、|: 選擇元字元
import re

s = "p\npython\nhello"

r1 = re.findall("p|hello", s, re.m) #['p', 'p', 'hello']

print(r1)

r2 = re.findall("[h|l]o", s, re.m)

print(r2) #['ho', 'lo']

8、分組元字元:() 將括號內的表示式定義為組
import re

s = "p\npoo\nhool"

r1 = re.findall("[p|h]o*", s, re.m) #['p', 'poo', 'hoo']

print(r1)

r2 = re.findall("[p|h](o*)", s, re.m)

#在['p', 'poo', 'hoo']的基礎上再進行(o*)取值

print(r2) #['', 'oo', 'oo']

9、轉義元字元
取消字串的轉義可以在前面加 r

取消正則語法的轉義,加 \

import re

s1 = "p\tpython\thello"

s2 = r"p\tpython\thello"

print(s1) #p python hello

print(s2) #p\tpython\thello

import re

s = "z\nzo\nzoo"

# 取消字串的轉義可以在前面加r

# 取消正則語法的轉義,加\

print(s)

r1 = re.findall(".", s) #單行匹配

r2 = re.findall(".", s, re.m) #多行匹配,此時 . 表示萬用字元

r3 = re.findall("\.", s, re.m) #多行匹配,用了\取消轉義,此時 . 表示 .本身,故返回空

print(r1) #['z', 'z', 'o', 'z', 'o', 'o']

print(r2) #['z', 'z', 'o', 'z', 'o', 'o']

print(r3) #

Python 正規表示式(基礎)

正規表示式 regular expression 是乙個特殊的字串行,描述了一種字串匹配的模式可以用來檢查乙個串是否含有某種子串 將匹配的子串替換或者從某個串中取出符合某個條件的子串,或者是在指定的文章中,抓取特定的字串等。python處理正規表示式的模組是re模組,它是python語言擁有全部的正...

Python正規表示式基礎

直接給出字元就是精確匹配。特殊字元首先需要轉義如 d 匹配乙個數字,w 匹配乙個字母或者數字。123 d 可以匹配 1231 但是無法匹配 123a d d d 可以匹配到 123 w w w 可以匹配到 py3 表示任意乙個字元,py.可以表示py3 py 等 表示任意長個字元,表示至少乙個字元,...

python基礎(正規表示式)

正規表示式用於搜尋 替換和解析字串。正規表示式遵循一定的語法規則,使用非常靈活,功能強大。使用正規表示式編寫一些邏輯驗證非常方便,例如電子郵件位址格式的驗證。python提供了re模組實現正規表示式的驗證。1.簡介 正規表示式是用於文字匹配的工具,它在源字串中查詢與給定的正規表示式相匹配的部分,乙個...