正则表达式满足两个条件:包特定字符含和不包含某字符

求一个正则表达式,满足如下:
文字中如果包含“智能终端”,则匹配上,但是“智能终端”前面不能包含“接收”两个字,如下例子
(1)110kV鹿瓦线智能终端装置异常:匹配上
(2)110kV鹿瓦线智能终端接收保护装置直跳链路中断:匹配上,“接收”在智能终端后面
(3)110kV鹿瓦线测控装置接收智能终端GOOSE组网链路中断:不能匹配上,因为包含了接收 收起
注意:“接收”和“智能终端”之间可能有其他字,例如
(4)1号主变A套保护接收中压侧智能终端GOOSE链路中断:不能匹配上,因为包含了接收

^.*(?<!接收)智能终端.*$
这个正则表达式能满足上面1、2、3 但是不满足4, 所以求一个可以满足如上几个条件的,谢过

满足上面4个语句要求的正则表达式 ^((?!接收.*?智能终端).)*$

我给你一个Javascript语言的例子,你看看吧

<script type=text/javascript>
var str = '1号主变A套保护接收中压侧智能终端GOOSE链路中断:';
var regex=/^((?!接收.*?智能终端).)*$/;
if(regex.test(str)==true){
 alert("匹配");
}else{
 alert("不匹配");
}
</script>

运行结果
不匹配

追问

上面四个满足了,但是
1号主变A套智能终端接收中压侧智能终端GOOSE链路中断

这个应该匹配上,但是你那个匹配不上,这个能提供点帮助不

追答

按照你的要求写的正则表达式  ^((.*?智能终端.*?接收.*?智能终端.*?)|((?!接收.*?智能终端).)*)$

我同样给你一个Javascript语言的例子,你看看吧.

<script type=text/javascript>
var str = '1号主变A套智能终端接收中压侧智能终端GOOSE链路中断';
var regex=/^((.*?智能终端.*?接收.*?智能终端.*?)|((?!接收.*?智能终端).)*)$/;
if(regex.test(str)==true){
 alert("匹配");
}else{
 alert("不匹配");
}
</script>

运行结果
匹配

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答