先看乙個例子
驗證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...