这个问题已经有了答案:Regular expression to match a line that doesn't contain a word29答我正在将一个页面读入一个变量,我想禁用地址中不包含单词“remede”的所有链接。到目前为止,我掌握的代码抓住了所有的链接,包括带有“补救”的链接。我做错什么了?$page = preg_replace('~<a href=".*?(?!remedy).*?".*?>(.*?)</a>~i', '<font color="#808080">$1</font>', $page);--解决方案--$page = preg_replace('~<a href="(.(?!remedy))*?".*?>(.*?)</a>~i', '<font color="#808080">$2</font>', $page); 最佳答案 尝试对于这个问题,您做错了什么:regex无论如何都是匹配的,对于每个url(甚至是包含~<a href="(.(?!remedy))*?".*?>(.*?)</a>~i的url),都有可能匹配remedy,因为您没有指定'~<a href=".*?(?!remedy).*?".*?>(.*?)</a>~i'可能不包含在属性中的任何位置,但您指定的必须是后面没有remedy,除以.*?开头的URL外,其他URL都是这样。希望大家能理解… 10-04 23:21