1 ^后面的以什么開(kāi)頭 ? $前面的以什么結(jié)尾 ?.任意字符 ?*任意次 ??取消貪婪匹配
例1:取出"jmmmmmmmmyjjj123"中的"jmmmmmmmmyj"
import re
line = "jmmmmmmmmyjjj123"
match_str = ".*?(j.*?j).*"
match_obj = re.match(match_str, line)
if match_obj:
? ? print(match_obj.group(1))
2 ?{1}大括號(hào)前面的字符出現(xiàn)一次 ? ?{1,}大括號(hào)前面的>=1次 ? ?{2,5} 出現(xiàn)2-5次
? ? | 或
? ? [abcd] 出現(xiàn)abcd任意 ? [^1]不是
例2:請(qǐng)寫出手機(jī)號(hào)碼的正則表達(dá)式
import re
def phoneNumRegex(self, phone):
? ? regex_str = "(1[34578][0-9]{9})"
? ? match_obj = re.match(regex_str, phone)
? ? if match_obj:
? ? ? ? return phone
3 \s空格字符 ?\S非空格字符 \w相當(dāng)于[A-Z a-z 0-9] \W與\w相反
4 ?\u4E00_\u9FA5 中文字符
例3 提取"study in 北京大學(xué)" 中 "北京大學(xué)"
line = "study in 北京大學(xué)"
regex_str = ".*?([\u4E00_\u9FA5])"
5 \d 數(shù)字
6 正則表達(dá)式綜合練習(xí):匹配多種情況下的出生年月日2001/6/1 2001-6-1 2001-06-01 2006-06
import re
def birthday_regex(birthday):
? ? regex_str ?= ".*出生于(\d{4}[年-/]\d{1,2}($|[月/-]\d{1,2}|月))"
? ? match_obj = re.match(regex_str, birthday)
? ? if match_obj:
? ? ? ? return match_obj.group(1)