对我来说似乎是一项微不足道的任务,但在过去的一个小时内未能完成。
正则表达式应匹配不包含短语“排除短语”的每个单词。
例如:
匹配:
'ok
string''some phrasOk because thre is no e in phrase'
等...
不匹配:
“排除短语”
“某些前缀排除短语”
“排除短语某些后缀”
等...
如果你有一句话:
Lorem ipsum dolor sit amet, consectetur adipiscing elit。
查找所有单词的正则表达式,但不是 'sit' 和 'adipiscing' 将是:
\b(?(?=坐|adipiscing)^\w+|\w+)\b
在 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);
那将是一个正则表达式^((?!phrase).)*$
解决这个问题的最简单方法:匹配(平凡)的正则表达式然后反转条件。
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