说明
此正则表达式将验证在给定的文本的每一行,以确保它不具有串{AA,BB,CC,DD}前面的字符串牛奶上的任何一行。匹配线然后返回。注意:OP中的示例显示匹配的“单词”仅仅是字符串,空白和单词边界无关紧要。
^(?!.*?(?:AA|BB|CC|DD).*?milk).*
^
锚这场比赛的开局线提前
(?!
开始负的样子,如果我的内容匹配成功的话,我会失败
.*?(?:AA|BB|CC|DD).*?milk
查找字符串AA BB cc dd后跟串奶
)
结束向前看
.*
匹配整个句子
PHP代码示例:
输入文本
AA went to the store and bought some milk
BBCCDDmilk
I went to the store and bought some milk
Aardvarks like milk
代码
<?php
$sourcestring="your source string";
preg_match_all('/^(?!.*?(?:AA|BB|CC|DD).*?milk).*/im',$sourcestring,$matches);
echo "<pre>".print_r($matches,true);
?>
个
匹配
$matches Array:
(
[0] => Array
(
[0] => I went to the store and bought some milk
)
)
完美,谢谢! – avedeversailles
原来的问题说:“所以我去商店买了一些牛奶会匹配”,但上面的正则表达式不匹配,至少在我使用它。为了找到包含牛奶的字符串,肯定要在“牛奶”之前关闭否定匹配。所以对我来说,有效的是“^(?!。*?(?: AA | BB | CC | DD))。*?milk。* – Beel
这是一个神话般的文章,它向我展示了如何解决我的问题,并比其他帖子更好地引用作为重复。竖起大拇指! – Beel