Regex 正则表达式匹配除某些URL之外的所有URL

Regex 正则表达式匹配除某些URL之外的所有URL,regex,url,Regex,Url,我需要匹配所有有效的URL,除了: 通常,除某些域之外的所有URL 以下是我到目前为止的情况: https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)? 将匹配与我的需要足够接近的URL(但决不是所有有效的URL!)(谢谢!) 将所有URL与www.匹配,但不在tempuri或w3域中 我真的很想 https?://([-\w\.]+)(?!tempuri|w3)\S* 要想工作,它似乎选择了所有http://strings 嘎,我应该

我需要匹配所有有效的URL,除了:



通常,除某些域之外的所有URL

以下是我到目前为止的情况:

https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?  
将匹配与我的需要足够接近的URL(但决不是所有有效的URL!)(谢谢!)

将所有URL与
www.
匹配,但不在
tempuri
w3
域中

我真的很想

https?://([-\w\.]+)(?!tempuri|w3)\S*
要想工作,它似乎选择了所有
http://
strings


嘎,我应该在乔姆斯基高层做这件事

以下正则表达式:

https?://(?!w3|tempuri)([-\w]*\.)(?!w3|tempuri)\S*
https?://(?!w3|tempuri)([-\w]*\.)(?!w3|tempuri)([-\w]*\.)(?!w3|tempuri)\S*
仅匹配以下摘录中的前四行:

https://ok1.url.com
http://ok2.url.com
https://not.ok.tempuri.com
http://not-ok.either.w3.com

http://no1.w3.org
http://no2.w3.org
http://tempuri.bla.com
http://no4.tempuri.bla
http://no3.tempuri.org
http://w3.org/foo
http://www.tempuri.org/foo
我知道你在想什么,答案是为了匹配上面的列表并只返回前两行,你必须使用以下正则表达式:

https?://(?!w3|tempuri)([-\w]*\.)(?!w3|tempuri)\S*
https?://(?!w3|tempuri)([-\w]*\.)(?!w3|tempuri)([-\w]*\.)(?!w3|tempuri)\S*
事实上,这只不过是对第一个正则表达式的轻微修改,其中

(?!w3|tempuri)([-\w]*\.)
零件连续出现两次


正则表达式不起作用的原因是,当包含时。在()*内部,这意味着它不仅可以匹配this.this.this.而且还可以匹配this.this.th.-换句话说,它不一定以点结尾,因此它会强制它在任何地方结束,以便表达式匹配。在正则表达式测试仪中尝试一下,你就会明白我的意思。

哇。。。即使按照URL regexen的标准,从snipplr那里看,这也是非常糟糕的。它将禁止在
之前包含各种有效标点字符的大量URL。事实上,它甚至不会接受这个问题的URL。不管怎样。。。使用负前瞻,如果你想这样做,它应该在你想匹配的
([-\w\.]+)
域名位之前。好的一点,在提出“所有有效URL”声明之前,我并没有在任何范围内尝试snipplr正则表达式。我会把它删掉的。是的,这是广告宣传的。然而,现在我意识到VisualStudio搜索正则表达式引擎不支持lookaheads,所以我在一个角落里安静地简化/啜泣。作为记录,我最终无法使用lookahead或postfix?操作人员傻。所以我运行了
[http | https]://[^w3 | tempuri | schemas][org | com | net][S*
,然后运行了
[http | https]://www.[^w3 | tempuri | schemas][org | com | net][S*
。Boo.这很奇怪,因为我给你的正则表达式是在.Net正则表达式引擎上测试的。。。嗯,我得调查一下。也许是.NET3.5的问题?有最新的吗?