Python正則八之邊界匹配

2021-08-24 23:44:28 字數 1847 閱讀 1919

先看乙個例子

驗證a字串的長度是否在4到8位之間

首先想到是用字符集來進行匹配

import re

a = '10001'

r = re.findall('\d',a)

print(r)

-----------------------------

輸出:['10001']

這樣確實可以匹配到a字串,但是如果a字串的長度是大於8位的呢

import re

a = '100000001'

r = re.findall('\d',a)

print(r)

-------------------------------

輸出:['10000000']

這樣還是可以匹配到值的。這是因為'\d'只是對字串a進行查詢,並不是完整的匹配整個字串,這時候就需要邊界匹配來實現了。

^指的是從字串開始進行匹配

$指的是從字串末尾進行匹配

import re

a = '10001'

r = re.findall('^\d$',a)

print(r)

-------------------------------------

輸出:['10001']

a字串的長度大於9位時:

import re

a = '100000001'

r = re.findall('^\d$',a)

print(r)

------------------------------------------

輸出:

這時候就沒有得到值了,證明a字串的長度不在4到8之間

再來理解下^$這兩個符號
import re

a = '100000001'

r = re.findall('000', a)

print(r)

-----------------------------------

輸出: ['000', '000']

正規表示式是普通字元3個0,這樣會得到兩個結果,因為a字串中有7個0,就匹配出了兩組結果。

先看下^從字串開始位置進行匹配

import re

a = '100000001'

r = re.findall('^000', a)

print(r)

-------------------------------

輸出:

注:這樣就沒有匹配到結果,這是因為從a字串的第一位開始進行匹配,第一位是1,並不是0,所以就沒有匹配到結果。

在看下$從字串末尾進行匹配

import re

a = '100000001'

r = re.findall('000$', a)

print(r)

---------------------------------------

輸出:

注:這樣也沒有匹配到結果,這是因為從字串a的末尾進行匹配,而字串a的末尾是1,並不是0,所以就沒有匹配到任何值。

正則分組和邊界匹配

測試匹配整個字串,然後找出符合字串當中匹配子正規表示式的子字串 例如 匹配只有3到5個數字,只有兩個 public class fenzu a z string s 123aa 3434bb 234ccc 00 matcher m p.matcher s 分組查詢是找出滿足全部正規表示式的條件中之後...

python 正則之字母匹配

a 匹配字串的開始 b 匹配乙個單詞邊界 取出a邊界單詞的個數 len re.findall r ba ab abc add 3 b 匹配非單詞邊界 d 匹配任意乙個數字範圍 0 9 d 匹配任意乙個非數字字元 d s 匹配空白字元 練習 print re.match r s 13d sre.sre...

正則匹配 Python

1.1 0 1 個字元1.2 放在末尾,兩個對等字元之間 對等字元 所有稱得上是括號的字元 左右對稱 所有非括號字元 自對稱 最小對等字元匹配 比如 匹配下文 最小結果只有順帶地,當有多個匹配結果時,m re.search m.group n 返回第n組括號匹配的字元。只需要一組結果時,用m.gro...