python的N個小功能之正則匹配

2022-07-04 06:09:10 字數 2219 閱讀 1298

1、. 匹配任意除換行符「\n」外的字元;

2、*表示匹配前乙個字元0次或無限次;

3、+或*後跟?表示非貪婪匹配,即盡可能少的匹配,如*?重複任意次,但盡可能少重複,惰性匹配;

4、 .*? 表示匹配任意數量的重複,但是在能使整個匹配成功的前提下使用最少的重複。

如:a.*?b匹配最短的,以a開始,以b結束的字串。如果把它應用於aabab的話,它會匹配aab和ab。

案例1line="2017-01-26 12:55:30-info"

logtime = re.compile('(.*?)-info')

m=logtime.search(line)

print m.group(1)

案例2line="args:[123,456,789,111,222]"

aaa = re.compile('args:\[.*?,.*?,.*?,.*?,(.*?)\]')

p=aaa.search(line)

print p.group(1)

案例3line="ccc\":12.56"

ddd = re.compile('ccc\":([0-9]*.[0-9]*)')

t=ddd.search(line)

print t.group(1)

一、校驗數字的表示式

1 數字:^[0-9]*$

2 n位的數字:^\d$

3 至少n位的數字:^\d$

4 m-n位的數字:^\d$

5 零和非零開頭的數字:^(0|[1-9][0-9]*)$

6 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9])?$

7 帶1-2位小數的正數或負數:^(\-)?\d+(\.\d)?$

8 正數、負數、和小數:^(\-|\+)?\d+(\.\d+)?$

9 有兩位小數的正實數:^[0-9]+(.[0-9])?$

10 有1~3位小數的正實數:^[0-9]+(.[0-9])?$

11 非零的正整數:^[1-9]\d*$ 或 ^([1-9][0-9]*)$ 或 ^\+?[1-9][0-9]*$

12 非零的負整數:^\-[1-9]0-9"*$ 或 ^-[1-9]\d*$

13 非負整數:^\d+$ 或 ^[1-9]\d*|0$

14 非正整數:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

15 非負浮點數:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

16 非正浮點數:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$

17 正浮點數:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

18 負浮點數:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

19 浮點數:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

二、校驗字元的表示式

1 漢字:^[\u4e00-\u9fa5]$

2 英文和數字:^[a-za-z0-9]+$ 或 ^[a-za-z0-9]$

3 長度為3-20的所有字元:^.$

4 由26個英文本母組成的字串:^[a-za-z]+$

5 由26個大寫英文本母組成的字串:^[a-z]+$

6 由26個小寫英文本母組成的字串:^[a-z]+$

7 由數字和26個英文本母組成的字串:^[a-za-z0-9]+$

8 由數字、26個英文本母或者下劃線組成的字串:^\w+$ 或 ^\w$

9 中文、英文、數字包括下劃線:^[\u4e00-\u9fa5a-za-z0-9_]+$

10 中文、英文、數字但不包括下劃線等符號:^[\u4e00-\u9fa5a-za-z0-9]+$ 或 ^[\u4e00-\u9fa5a-za-z0-9]$

11 可以輸入含有^%&',;=?$\"等字元:[^%&',;=?$\x22]+

12 禁止輸入含有~的字元:[^~\x22]+

做乙個拖拽的小功能

做了乙個拖拽功能,感覺有點卡頓。思路比較簡單,滑塊拖動的時候限制邊界條件就好了,完整 如下 拖拽 title style divclass drag style head body div class div class divclass drag div div script window.onl...

Python列表生成式12個小功能,你常用哪幾個?

作者 zglg python與演算法社群 python裡表示乙個列表,對容器型別的資料進行運算和操作,生成新的列表最高效 快速的辦法,就是列表生成式。它優雅 簡潔,值得大家多多使用!今天盤點列表生成式在工作中的主要使用場景。range快速生成連續列表 in 1 a range 11 in 2 a o...

Python列表生成式12個小功能,你常用哪幾個?

作者 zglg python與演算法社群 python裡表示乙個列表,對容器型別的資料進行運算和操作,生成新的列表最高效 快速的辦法,就是列表生成式。它優雅 簡潔,值得大家多多使用!今天盤點列表生成式在工作中的主要使用場景。range快速生成連續列表 in 1 a range 11 in 2 a o...