1. 程式人生 > 其它 >第十章 (小知識)正則表示式

第十章 (小知識)正則表示式

認識正則表示式

正則表示式

'''
正則表示式是一門獨立的語言 跟其他程式語言都沒有關係!!!!
如果想在python程式碼中使用正則 需要藉助於內建模組re
'''

# 什麼是正則表示式?
	利用一些特殊的組合去字串中篩選出符合條件的資料
 
'''
1.必須是11位
2.必須是純數字
3.必須符合手機號的排布 15 16 18 19
'''

# 傳統方法
phone = input('請輸入正確的手機號碼:').strip()
if len(phone) == 11:
    if phone.isdigit():
        if phone.startswith('15') or phone.startswith('16') or phone.startswith('17') or phone.startswith('18'):
            print('手機號正確')
        else:
            print('輸入錯誤')
    else:
        print('必須是純數字')
else:
    print('請正確輸入手機號碼')

# 正則表示式
import  re
phone = input('請輸入正確的手機號碼:').strip()
if re.match('^(13|14|15|16|17)[0-9]{9}$',phone):
    print('輸入正確')
else:
    print('輸入格式錯誤!')

字元組

# 特徵是使用中括號括起來的  字串預設只能單個單個字元匹配
[0123456789]  # 匹配0到9之間任何一個數字
	可以簡寫為
    [0-9]
[a-z]  # 匹配小寫字母a到字母z其中任意一個字母
[A-Z]  # 匹配大寫字母A到字母Z其中任意一個字母
[a-zA-Z0-9]  # 匹配所有的數字 小寫 大寫

特殊符號

# 特殊符號預設也只能單個單個字元匹配
.		匹配除換行符以外的任意字元
\d		匹配數字
^		匹配字串的開始
$		匹配字串的結尾
		'''^與$組合使用可以精準限制要查詢的資料'''
a|b		匹配字元a或字元b
()		匹配括號內的表示式也表示一個組(不會影響正則表示式的匹配單純的分組而已)
[...]	匹配字元組中的字元、
[^...]	匹配除了字元組中字元的所有字元

貪婪匹配與非貪婪匹配

# 帶匹配的字串
	<script>123</script>
# 正則表示式
	<.*>  '''預設貪婪匹配 儘可能多的匹'''
# 將貪婪變為非貪婪 只需要在量詞的後面加問號即可
	<.*?> '''非貪婪匹配 儘可能少的匹配 結束條件有左右兩邊決定'''

還有很多方式不懂就問百度。