標籤:指定 範圍 意思 運算式 開始 bcb line 多次 不同的
Regex
1、字元匹配
1.1 一般字元
大多數字母和字元一般都會和自身匹配
如Regex test會和字串 "test"完全符合
1.2 元字元
. ^ $ * + ? {} [ ] \ | ()
1) [ ]
--常用來表達一個字元集
--元字元在字元集中不起作用
-- 補集匹配不在區間範圍內的字元
Exp: s =‘ t[io]p‘ t = ‘top tip tep trp‘ re.findall(s,t)
Exp: r =r ‘x[0-9]x‘ re.findall(r,‘x3x‘)
2) ^ -- 匹配行首
。 除非設定multiline標誌,它只是匹配字串的開始。在MULTILINE模式裡,它也可以直接匹配字串中的每個換行。
r = ‘^hello‘ s = ‘hello the world‘ re.findall(r,s) result : [‘hello‘]
3)$ -- 匹配行尾
行尾被定義為要麼是字串尾,要麼是一個換行字元後面的任何位置。
4)\ -- 反斜線後面可以加不同的字元以表示不同特殊意義
5) * --指定前一個字元可以被匹配零次或更多次,而不是只有一次。匹配引擎會試著重複儘可能多的次數。(不超過整數界定範圍,20億次)
- a[bcd]*b -- "abcbd"
6) + -- 表示匹配一或更多次。
--注意* 和 + 之間的不同; * 匹配零或更多次,所以可以根本就不出現,而+則要求至少出現一次。
r = r"ab+"
re.findall(r,‘abbb‘)
[‘abbb‘]
7) ? --匹配一次或零次;你可以認為它用於標識某事物是可選的
r = r"^010-?\d{8}$"
re.findall(r,‘01012345678‘)
result:[‘01012345678‘]
8){m,n}
-- 其中m和n是十進位整數。 該限定符的意思是至少有m個重複,至多到n個重複。
-- 忽略m會認為下邊界是0,而忽略n的結果將是上邊界為無窮大(實際上是20億)
-- {0,}等同於 *,(1,)等同於+,而{0,1}則與?相同。 如果可以的話,最好使用 * , + ,或 ?表示。
Python Regex