多選結構的形式是(...|...),在括號內以豎線 | 分隔開多個子表達式,這些子表達式也叫多表達分支(option); 在一個多選結構內,多選分支的數目沒有限制。在匹配時,整個多選結構被視為單個元素,只要其中某個子表達式能夠匹配,整個多選結構的匹配就成功;如果所有子表達式都不能匹配,則整個多選結構匹配失敗。
回到身份證號碼匹配的例子,既然可以區分15位和18位兩種情況,就可以將毎種情況對應的表達式作為一個分支,使用多選結構([1-9]\d{14} | [1-9]\d{14}\d{2}[0-9x])。這個表達式的匹配如例3-9所示,它同樣可以准確驗證身份證號碼。注 | 實際沒有空格
沒有括號的多選結構
ab|cd 等價於 (ab|cd)
多選結構的匹配順序
print re.search(r"(jeffrey|jeff)", "jeffery").group(0) jeffrey print re.serch(r"(jeff|jeffery)", "jeffery").group(0) jeff
php 與 python 匹配順序一樣
