正则表达式:分组

身份证匹配:

idcardregex = r"^[1-9]d{13,16} [0-9x]$"

re.search(idcardregex, "110101198001017032") != None      # =>True

小写字母可能会匹配错误

----使用括号 可以兼容15位和18位的情况。是用括号的意思就是分组。

id = r"^[1-9]d{14}(d{2})"

一组字符循环出现,就应该称为一组。

准确匹配opentag:

r"^<[^/]([^>]*[^/])?>$" 

匹配完整E-mail的正则表达式:

emailRegex = r"^[-w.]{1,64}@([-a-zA-Z0-9]{1,63}.)*[-a-zA-Z0-9]{1,63}$"

多选结构:{。。|。。}

id=r"^([1-9]d{14}|[1-9]d{14}d{2}[0-9x])$"

准确匹配0-255之间的字符串:

r"^([0-9]|[0-9]{2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$"

准确的HTML tag匹配

id=r"^<('[^']*'|"[^"]*"|[^'">])+>$"

^ab|cd$ 字符串开头的ab或者是结尾的cd.

多选结构的选择顺序是偏左的。

小结:

对长度可变的字符串可以使用分组。

URL使用分组匹配要梳理好逻辑关系,用括号的分组功能把各种分支的情况归拢到一起。

多选结构可以简化单纯分组的难度。

没有括号的多选结构的解读是开始,结尾的解读方式

遇到相似的多选结构的匹配顺序是优先匹配左侧的选项。

分析 演绎 解读 总结。