正则表达式,不匹配多个长度不等字符串

时间:2021-06-25 06:11:17

正则表达式,不包含多个长度不等字符串。

因为多数对于零宽断言检测的讲解中并没有对多个不等长字串做过说明,因此这篇文章在此举例。

 

由于是长度不相等,所以不能用中括号或的方式,而且不进行消费,所以只能是断言检测。

由于是不匹配(不包含)因此是负向,再由于是在所要匹配的字符串之前的检查,因此是后行(相对于正则消费字符串的方向)

因此要使用“零宽负向后行断言检测”。

 

工作中同事遇到问题,如下语句

没色差
没有色差
无色差
色差,有色差
色差太大,别的地方穿了才知道了
哈哈哈色差
色差

目标:匹配色差,但是不匹配"没色差"、“没有色差”、“无色差”

可以使用——零宽负向后行断言

但是,如果多个断言条件在里面,应该长度一直,因为他们是同时消费字串的,由于没、没有、无长度不一致,因此增加任意字符".",使其一致。

(?<!(没有|.没|.无))色差

虽然断言匹配不占用位置,但是后行检查时会向前检查两个字符,但是如果是行首,则不会检查。