1. 程式人生 > 其它 >python之軟體開發目錄規範、正則表示式

python之軟體開發目錄規範、正則表示式

目錄

一、軟體開發目錄規範

二、正則表示式簡介

三、正則表示式之字元組

四、正則表示式之特殊符號

五、正則表示式之量詞

六、貪婪匹配與非貪婪匹配

一、軟體開發目錄規範

目錄規範沒有固定要求,只要符合清晰可讀的原則即可。
一般有以下目錄:
bin資料夾
存放一系列啟動檔案(若檔案數量很少或者只有一個的時候可以直接放外面,不用放資料夾也可以)
start.py
cof資料夾
存放一系列配置檔案
settings.py(一般情況下該檔案內的變數名都是大寫)
lib資料夾
存放公共功能
common.py
db資料夾
存放資料相關檔案
userinfo.txt
log資料夾
存放日誌記錄檔案
log.txt
core資料夾


存放核心程式碼檔案
src.py
readme檔案
存放說明相關資訊(類似於說明書 廣告 章程)
requirements.txt
存放專案所需的第三方模組即版本號

二、正則表示式簡介

正則表示式是一門獨立的語言,跟其他的程式語言都沒有關係。
在python中想使用正則表示式就需要藉助模組re
正則表示式利用一些特殊符號的組合去字串中篩選出符合條件的字元。

# 舉個例子:每個網站的註冊頁面,需要輸入手機號碼後獲取驗證碼,在輸入的時候,必須符合以下規範:
# 1.輸入長度必須是11位;2.輸入的必須是純數字;3.輸入的必須是符合電話號碼開頭,也就是13-19開頭。
# 如果用之前的所學程式碼實現,可以這麼寫:
phone_num = input('請輸入手機號碼:').strip()
if len(phone_num) == 11:
	if phone_num.isdigit():
		if phone_num.startswith('13') or phone_num.startswith('14') or phone_num.startswith('15') or phone_num.startswith('16') or phone_num.startswith('17') or phone_num.startswith('18') or phone_num.startswith('19'):
			print('輸入格式正確')
		else:
			print('格式有誤')
	else:
		print('請輸入純數字')
else:
	print('請輸入11位數字')
# 如果用正則表示式,就是非常簡化了
import re
phone_num = input('請輸入手機號碼:').strip()
if re.match('^(13|14|15|16|17|18|19)[0-9]{9}$', phone_num):
	print('輸入格式正確')
else:
	print('輸入格式有誤')

三、正則表示式之字元組

字元組的特徵是中括號括起來,字串預設只能單個單個字元匹配。
[0-9] 匹配0-9任意一個數字
[a-z] 匹配a-z任意一個小寫字母
[A-Z] 匹配A-Z任意一個大寫字母
[0-9a-zA-Z] 匹配0-9,a-z,A-Z之間的任意一個字元,書寫的時候中括號內不需要字元隔開,會自動有識別的

四、正則表示式之特殊符號

特殊符號也預設只能單個單個匹配。
. 匹配除了換行符之外的任意字元
\d 匹配任意數字
^ 匹配字串的開頭
$ 匹配字串的末尾
^...$連用就是精準匹配...字串
a|b 匹配a或b
() 匹配括號內的表示式,也表示一個組,不會影響正則表示式的匹配單純的分組而已
[...] 匹配字元組中的字元
[^...] 取反,匹配除了字元組中的所有字元

五、正則表示式之量詞

在沒有量詞修飾的情況下,字串匹配都是預設單個。量詞必須要配合字元組或者特殊字元使用,不能單獨使用。量詞只能作用前面一個表示式。量詞的使用預設貪婪匹配,意思是匹配的時候符合多的就出多的結果。
* 重複零次或多次
+ 重複一次或多次
? 重複零次或一次
{n} 重複n次
{n,} 重複n到多次
{n, m} 重複n到m次

六、貪婪匹配與非貪婪匹配

正則表示式預設貪婪匹配,儘可能多的匹配。
前面的那些量詞*、+、?、{n}...都是預設貪婪匹配

如果要變成非貪婪匹配,可以這麼寫(加個問號):
在量詞後面加一個問號,就可以變成非貪婪匹配。

注意:一些常見的正則表示式不需要自己寫,可以網上找一下