Php 正则表达式不包括字符串

Php 正则表达式不包括字符串,php,regex,pcre,Php,Regex,Pcre,我使用以下PCRE将URL与PHP中的preg_match()进行匹配: (2)以下两种:::::[a-z[a-z[[a-a-z[[[w-[[w-[[w-[[[w-[[w-[[[w-[[[w-[w-[[[[w-[w-[[[C:::::::::[a-3-z0-z0-9-9-9-9-9-9-9-9%])))以下以下以下两种::::::::::)以下以下以下以下两种::::::::::::::::::::::)以下以下以下以下两个,(,(,(,(,(,(,(,(一::::::::::::::[1.3-

我使用以下PCRE将URL与PHP中的preg_match()进行匹配:

(2)以下两种:::::[a-z[a-z[[a-a-z[[[w-[[w-[[w-[[[w-[[w-[[[w-[[[w-[w-[[[[w-[w-[[[C:::::::::[a-3-z0-z0-9-9-9-9-9-9-9-9%])))以下以下以下两种::::::::::)以下以下以下以下两种::::::::::::::::::::::)以下以下以下以下两个,(,(,(,(,(,(,(,(一::::::::::::::[1.3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-]{};:\'”,«»“']))~ 我正试图排除.洋葱网站的匹配。我注意到一些类似的问题已经在这个网站上得到了回答,但不幸的是,无法将它们的解决方案转移到我的问题上

到目前为止,我已经尝试:

~(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))(?!\.onion)~
(2)以下两种:::::[a-z[a-z[[a-a-z[[[w-[[w-[[w-[[[w-[[w-[[[w-[[[w-[w-[[[[w-[w-[[[C:::::::::[a-3-z0-z0-9-9-9-9-9-9-9-9%])))以下以下以下两种::::::::::)以下以下以下以下两种::::::::::::::::::::::)以下以下以下以下两个,(,(,(,(,(,(,(,(一::::::::::::::[1.3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-]{};:\'”,«»“'])(?!\.洋葱)~ 以及:

(2)以下两种:::::[a-z[a-z[[a-a-z[[[w-[[w-[[w-[[[w-[[w-[[[w-[[[w-[w-[[[[w-[w-[[[C:::::::::[a-3-z0-z0-9-9-9-9-9-9-9-9%])))以下以下以下两种::::::::::)以下以下以下以下两种::::::::::::::::::::::)以下以下以下以下两个,(,(,(,(,(,(,(,(一::::::::::::::[1.3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-3-]{};:\'”,«»“'])(?:(?!\.洋葱)~
没有运气(两个仍然匹配)。有人能指出它们不起作用的原因吗?

您可以在正则表达式的开头插入此负前瞻性

(?!.*?\.onion)
i、 e

以下代码:::(::[a-z[[a-z[[[w-[w-[[w-]以下以下以下::(::::{1,3}[a-z0-9-z0-10-9-9-0-z0-9-10-9-10-10-10-9-10-9-9-10-10-9-10-9-10-10-10-9-10-10-9-10-10-9-9-9-9-9%])))))以下以下以下的::::::::::::::)以下以下以下以下以下以下以下以下的:::::::::::::::::::::::)以下以下以下以下以下:::::::::::::::::::::::)以下以下以下以下以下以下???????????????????????\s`!()\[\]{};:\'',«»'''))~
在开始处添加一个负前瞻

(?i)(?!.*\.onion(?!\S))\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))
(a)a-z[[[a-z[[[[w-[[w-]以下+以下以下:::::::)以下(a)a-z[[a-z[[a-3-3}[a-z0-10-10-10-10-9-0-0-10-10-9-9-9-9-9-9-9-9-9-9-9-9-9-9%])))以下:::::::::::::)以下以下以下以下,(,(,(,(,(,(我)我)我)我,(,(,(,(,(,(,(我)我)我)我)我)我,(,(,(,(,(,(,(,(,(,(我)我)我)我)我)我)我)我)我)我)我)有((((((((,,,,,,,),(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(我)我)我)我)我)我)我);[^\S`!()\[\]{};:\',«»“'))


请注意,此正则表达式将匹配
http://test.onion.foo
但不是结尾有
.onion
的链接。

谢谢。不过,我必须给@anubhava一个公认的答案,正如你所说,这个解决方案仍然匹配
(?!.*?\.onion)
~(?i)\b(?!.*?\.onion)((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))~
(?i)(?!.*\.onion(?!\S))\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))