正則表達式--條件分支小記
只有當在字符串中的同一個位置存在兩個選擇分支同時匹配的時候,正則式中的選擇分支的順序才有意義。例如,正則式?Jane|Janet?在匹配目標文本Her name is Janet的時候,就會有兩個選擇分支在同一位置出現(xiàn)匹配。在此正則表達式中并不存在單詞邊界。事實上,?Jane?是否只匹配到Her name is Janet中的單詞Janet的一部分并不重要。
?Jane|Janet?之所以會匹配到Her name is Janet中的Jane,是因為一個正則制導的正則表達式引擎是遵循“淺嘗輒止”的工作原則的(eager)。除了會從左向右掃描目標文本,查找最左匹配之外,它還會從左向右掃描正則式中的選擇分支。而一旦它找到一個匹配的選擇分支,正則引擎就會立即停止。
當?Jane|Janet?到達了Her name is Janet中的J的時候,第一個選擇分支?Jane?,成功匹配。第二個選擇分支則根本沒有進行嘗試。如果我們告訴引擎接著查找下一個匹配的話,這時候在目標文本中剩下的只有t。此時兩個選擇分支都不能成功匹配。
以上摘自異步社區(qū)
分支條件
又叫邏輯運算符,在此X
和Y
表示兩個表達式
XY
?X緊跟YX|Y
?表示X或Y,從左到右,滿足第一個條件就不會繼續(xù)匹配了。
以上摘自w3cschool
X|Y匹配XY時會有X,Y兩個結果。只有當某個位置既能被X匹配上又能被Y匹配上時,才會出現(xiàn)一個結果,就是條件分支中較前的結果。w3cschool上的解釋太模糊了,差評。
標簽: