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

Posted 蜗牛随笔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式,不匹配多个长度不等字符串相关的知识,希望对你有一定的参考价值。

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

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

 

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

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

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

 

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

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

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

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

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

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

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

以上是关于正则表达式,不匹配多个长度不等字符串的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式匹配一定长度的单词

正则表达式

正则表达式字符匹配

正则表达式的贪婪和非贪婪模式

正则表达式字符匹配

输入框如何限制中英字符长度不等?