正則表達式,不包含多個長度不等字符串。
因為多數對於零寬斷言檢測的講解中並沒有對多個不等長字串做過說明,因此這篇文章在此舉例。
由於是長度不相等,所以不能用中括號或的方式,而且不進行消費,所以只能是斷言檢測。
由於是不匹配(不包含)因此是負向,再由於是在所要匹配的字符串之前的檢查,因此是后行(相對於正則消費字符串的方向)
因此要使用“零寬負向后行斷言檢測”。
工作中同事遇到問題,如下語句
沒色差
沒有色差
無色差
色差,有色差
色差太大,別的地方穿了才知道了
哈哈哈色差
色差
目標:匹配色差,但是不匹配"沒色差"、“沒有色差”、“無色差”
可以使用——零寬負向后行斷言
但是,如果多個斷言條件在里面,應該長度一直,因為他們是同時消費字串的,由於沒、沒有、無長度不一致,因此增加任意字符".",使其一致。
(?<!(沒有|.沒|.無))色差
雖然斷言匹配不占用位置,但是后行檢查時會向前檢查兩個字符,但是如果是行首,則不會檢查。