正则表达式匹配不包含短语的所有内容

时间:2012-06-26 11:31:23

标签: c# .net regex

对我来说似乎是一项微不足道的任务,但过去一小时内未能实现这一目标。

正则表达式应匹配不包含短语'exclude phrase'的每个单词。

例如:
比赛:
'ok string'
'有些phrasOk,因为在短语中没有'' 等...

不匹配:
'排除短语'
'有些前缀排除短语'
'排除短语一些后缀'
等...

3 个答案:

答案 0 :(得分:2)

如果您有短语:

  

Lorem ipsum dolor sit amet,consectetur adipiscing elit。

找到所有单词的正则表达式,但不是'sit'和'adipiscing'将是:

  

\ B((=坐|?adipiscing)^ \ W + | \ W +)\ B'/ P>

在php中:

$text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.';

$matches = array();
preg_match_all("/\b(?(?=sit|adipiscing)^\w+|\w+)\b/i", $text,$matches);

var_dump($matches);

答案 1 :(得分:1)

这将是一个正则表达式^((?!phrase).)*$

答案 2 :(得分:1)

最简单的解决方法:正则表达式匹配(平凡)然后反向条件。

python中的示例:

>>> not(re.search ('exclude phrase','Some prefix exclude phrase'))
False
>>> not(re.search ('exclude phrase','exclude phrase some suffix'))
False
>>> not(re.search ('exclude phrase','ok string'))
True