包含一个表达式的正则表达式但不包含另一个表达式

时间:2015-01-08 08:52:59

标签: regex regex-negation

我们目前正在匹配“service_hub * queue” 我想忽略“service_hub_scout_dead_queue”的情况,但仍然匹配其他所有内容。 这是什么正则表达式?

2 个答案:

答案 0 :(得分:4)

这个javascript sollution给出了一个匹配

的数组
var myText = 'service_hub_anything_queue Add service_hub_scout_dead_queue something service_hub_someting_queue else';
var myMatches = myText.match(/service_hub(?!_scout_dead_)\w+queue/g);

如果您对比赛后的内容感兴趣

var mySplit = ('dummy'+myText).split(/service_hub(?!_scout_dead_)\w+queue/g).filter(function(txt,i) {return (i>0);})

我把'假'然后过滤掉第一部分,使其在sting以有效标签开始时和不在时都能正常工作。

答案 1 :(得分:2)

使用负面的后视:"service_hub_.*?(?<!_scout_dead)_queue"

流行的正则表达式引擎似乎是widely supported;我已经使用Java(或Scala,而不是)测试,以确保它有效。