正則定義:用一些特殊字符去字串中匹配我們想要的資料
字符組
| 正則 | 說明 |
| [0123456789] | 匹配0-9里面 的任意一個 |
| [0-9] | 匹配0-9里面 的任意一個 |
| [A-Z] | 匹配A-Z里面 的任意一個 |
| [a,z] | 匹配a-z里面 的任意一個 |
| [0-9a-zA-Z] | 匹配數字,大小寫形式的a-z |
字符
|
元字符 |
匹配內容 |
|
. |
匹配除換行符以外的任意字符 |
|
\w |
匹配字母或數字或下劃線 |
|
\s |
匹配任意的空白符 |
|
\d |
匹配數字 |
|
\n |
匹配一個換行符 |
|
\t |
匹配一個制表符 |
|
\b |
匹配一個單詞的結尾 |
|
^ |
匹配字串的開始 |
|
$ |
匹配字串的結尾 |
|
\W |
匹配非字母或數字或下劃線 |
|
\D |
匹配非數字 |
|
\S |
匹配非空白符 |
|
a|b |
匹配字符a或字符b |
|
() |
匹配括號內的運算式,也表示一個組 |
|
[...] |
匹配字符組中的字符 |
|
[^...] |
匹配除了字符組中字符的所有字符 |
量詞
1 量詞不能單獨使用
2 必須搭配運算式使用,只能影響前面的一個字符
| 量詞 | 用法 |
| * | 重復零次或者多次 |
| + | 重復一次或者多次 |
| ? | 重復零次或者一次 |
| {n} | 重復n次 |
| {n,} | 重復n次到更多次 |
| {n,m} | 重復n到m次 |
分組()或者| 【^】
| 正則 | 用法說明 |
| ^[1,9]\d{13,16}[0-9x]$ | 匹配一個以1-9開頭,13-16位,并且以0-9或者x結尾的字符 |
|
^[1-9]\d{13,16}[0-9x]$ |
1101011980010170 |
|
^[1-9]\d{14}(\d{2}[0-9x])?$ |
匹配一個以1-9開頭長度為14位,惰性匹配隨機0-9或者x中匹配0-1位 |
|
^([1-9]\d{16}[0-9x]|[1-9]\d{14})$ |
匹配一個以1-9開頭長度為16位,0-9或者或前面是1-9長度為14位的字符 |
貪婪匹配和非貪婪匹配
貪婪匹配:在滿足匹配時,匹配盡可能長的字串,默認情況下,采用貪婪匹配
非貪婪匹配:*? 重復任意次,但盡可能少重復 +? 重復1次或更多次
取消貪婪匹配:非貪婪匹配就是盡可能少匹配
轉義符(\)
比如\n,\s,具有特殊意義的元字符,我們想要對他進行轉義1 \\n,\\s 2 r"\n",r"\s"
r===>轉義字符
.*?的用法
. 是任意字符
* 是取0到+無窮長度
? 是非貪婪匹配
如:.*?x ====,取前面任意長度的字符,直到第一個x出現
內置模塊-->re模塊
使用方法===》import re
注意事項:1 如果匹配到了,就回傳匹配到的結果,并且是串列形式
2 如果匹配不到,回傳【】,并沒有報錯
用法
findall
ret=re.findall("hhh","hhhaaacccddd") print(ret)
說明:第一個是正則,第二個是字符
search
ret=re.search("hhh","hhhaaacccddd") l=ret.group()# 通過呼叫group()方法得到匹配的字串,如果字串沒有匹配,則回傳None, print(l)
match
ret = re.match('a', 'abc').group() # 同search,不過盡在字串開始處進行匹配 print(ret) #結果 : 'a'
split
ret = re.split('[ab]', 'abcd') # 先按'a'分割得到''和'bcd',在對''和'bcd'分別按'b'分割 print(ret) # ['', '', 'cd']
sub
ret = re.sub('\d', 'H', 'eva3egon4yuan4', 1)#將數字替換成'H',引數1表示只替換1個 print(ret) #evaHegon4yuan4
subn
ret = re.subn('\d', 'H', 'eva3egon4yuan4')#將數字替換成'H',回傳元組(替換的結果,替換了多少次) print(ret)
了解
import re ret = re.finditer('\d', 'ds3sy4784a') #finditer回傳一個存放匹配結果的迭代器 print(ret) # <callable_iterator object at 0x10195f940> print(next(ret).group()) #查看第一個結果 print(next(ret).group()) #查看第二個結果 print([i.group() for i in ret]) #查看剩余的左右結果
時間模塊
模塊使用===》import time
基本語法
1 time.time()時間戳
2 time.sleep()推遲指定的時間運行,單位為秒
時間的表示
1 時間戳(timesteamp)
2 結構化時間
3 格式化時間
python中時間日期格式化符號(strftime)
%y 兩位數的年份表示(00-99) %Y 四位數的年份表示(000-9999) %m 月份(01-12) %d 月內中的一天(0-31) %H 24小時制小時數(0-23) %I 12小時制小時數(01-12) %M 分鐘數(00=59) %S 秒(00-59) %a 本地簡化星期名稱 %A 本地完整星期名稱 %b 本地簡化的月份名稱 %B 本地完整的月份名稱 %c 本地相應的日期表示和時間表示 %j 年內的一天(001-366) %p 本地A.M.或P.M.的等價符 %U 一年中的星期數(00-53)星期天為星期的開始 %w 星期(0-6),星期天為星期的開始 %W 一年中的星期數(00-53)星期一為星期的開始 %x 本地相應的日期表示 %X 本地相應的時間表示 %Z 當前時區的名稱 %% %號本身
結構化時間(struct_time) :struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天等)
|
索引(Index) |
屬性(Attribute) |
值(Values) |
|
0 |
tm_year(年) |
比如2011 |
|
1 |
tm_mon(月) |
1 - 12 |
|
2 |
tm_mday(日) |
1 - 31 |
|
3 |
tm_hour(時) |
0 - 23 |
|
4 |
tm_min(分) |
0 - 59 |
|
5 |
tm_sec(秒) |
0 - 60 |
|
6 |
tm_wday(weekday) |
0 - 6(0表示周一) |
|
7 |
tm_yday(一年中的第幾天) |
1 - 366 |
|
8 |
tm_isdst(是否是夏令時) |
默認為0 |
三種時間之間的轉換


datetime模塊
語法====》import datetime
用法
1 自定義日期
import datetime ret =datetime.date(2222,2,2) print(ret)
獲取當前日期
ret=datetime.datetime.now() print(ret)
查看距離某一個時間還有多久
ret=datetime.datetime.now() l_time=datetime.timedelta(days=90,hours=17,minutes=55,milliseconds=445) print(ret-l_time)
UTC時間
ret=datetime.datetime.utcnow() print(ret)
總結
datetime====>年,月,日,時,分,秒
date =====>年,月,日
time =====》時,分,秒
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/546310.html
標籤:其他
上一篇:C++筆記--函式、預處理
下一篇:03-RabbitMQ的作業模式
