默認的多選分支『(…|…)』使用的括號是會捕獲文本的,也就是說,括號內的表達式真正匹配成功的文本會記錄下來,匹配完成之后可以提取出來,具體到上面的例子,就是我們有辦法在匹配完成后“提取”出u或har或onduc或our。但許多時候,我們需要的只是整個表達式的匹配,而不關心“匹配時到底選擇的哪種可能情況”,在這種情況下,我們稍加修改,使用“不捕獲文本的括號”,可以提高效率。不捕獲文本的寫法也很簡單,只是在開擴號之后加上字符『?:』,也就是『(?:…|…)』,具體到上面的例子,就應該寫成『c(?:u|har|onduc|our)t』。這樣做雖然繁瑣點,但效率有保障,閱讀起來也不困難,我推薦養成這種習慣,只要用到了括號,就想想是否真的要捕獲括號內表達式匹配的文本,如果不需要,就是用不捕獲文本的括號。
