美國、英國護照號碼:9 位數字 加拿大護照:2 個字母加 6 個數字 法國護照:2 個數字加 2 個字母加 5 個數字 義大利護照:2 個字母加 7 個數字 西班牙護照:3 個字母加 6 個數字 德國護照:9 個字元,由 2-3 個數字與 6-7 個字母混排,頭尾是字母。或者單純為 9 個數字
def foreign_passport(sentence):
pattern = [r'\d', r'[a-za-z][0-9]', r'[0-9][a-za-z][0-9]', r'[a-za-z][0-9]', r'[a-za-z][0-9]', r'[a-za-z][a-za-z0-9][a-za-z]']
categories =
# print(re.findall(pattern[5], sentence, re.i))
for i in range(len(pattern)):
if re.search(pattern[0], sentence, re.i): #re.i表示忽略字母大小寫
return categories[0] + '護照', re.findall(pattern[0], sentence, re.i)
elif re.search(pattern[1], sentence, re.i): #re.i表示忽略字母大小寫
count_alpha = 0
count_num = 0
for s in re.findall(pattern[1], sentence, re.i)[0]:
if s.isalpha():
count_alpha += 1
elif s.isdigit():
count_num += 1
# print('alpha',count_alpha)
# print('num', count_num)
if count_alpha == 2 and count_num == 6:
return categories[1] + '護照', re.findall(pattern[1], sentence, re.i)
elif count_alpha == 2 and count_num == 7:
return sentence + ' 欄位中含有' + categories[3] + '護照'
elif count_alpha == 3 and count_num == 6:
return sentence + ' 欄位中含有' + categories[4] + '護照'
elif re.search(pattern[2], sentence, re.i): #re.i表示忽略字母大小寫
return categories[2] + '護照', re.findall(pattern[2], sentence, re.i)
elif re.search(pattern[3], sentence, re.i): #re.i表示忽略字母大小寫
return categories[3] + '護照', re.findall(pattern[3], sentence, re.i)
elif re.search(pattern[4], sentence, re.i): #re.i表示忽略字母大小寫
return categories[4] + '護照', re.findall(pattern[4], sentence, re.i)
elif re.search(pattern[5], sentence, re.i): #re.i表示忽略字母大小寫
return categories[5] + '護照', re.findall(pattern[5], sentence, re.i)
else:
return '欄位中不含護照資訊'
正則匹配時間格式
是從專案裡抽出來的,沒有細整理。應用場景是在碼值翻譯的時候,需要把不同格式的時間翻譯一下。我們的專案是匯入zip包,儲存老資料,思路是先去判斷xml檔案裡面的時間是什麼格式的,然後根據具體的格式轉換。docking annotation field.getannotation docking.cla...
js 正則匹配
isnumber 是否為數字 regexps.isnumber d d isint 是否為整形 regexps.isint d istime 是否為時間格式 regexps.istime d d d s d d d isdate 是否為日期格式 regexps.isdate d d d isemai...
perl正則匹配
字元的種類是一定的,無非是空格,數字,大小寫字母,和perl中定義的元字元,還有本國語言。所以原則上任何格式的字元都能匹配。匹配工具 選擇符號,關鍵字,量詞,斷言,轉義字元 當出現多個字元組成的 非空格字元時候,例如123,45 3 s sdgg 則使用 0 9a za z 若加上 則只能匹配一行中...