2009-09-25 35 views
0

我们的网站上的文本编辑器出现问题,导致网址加倍。因此,例如,文本字段可能看上去包含:正则表达式在数据库字段中查找错误的URL

This is a description for a media item, and here in <a href="http://www.example.com/apage.htmlhttp://www.example.com/apage.html">a link</a>. 

所以几乎我需要一个正则表达式来检测以http开始,有一个结束引号之前另一HTTP,如“http://www.example.com/apage.htmlhttp://www.example.com/apage.html

+0

你只想要一个匹配或想要捕获其中的一个? – 2009-09-25 16:59:18

回答

3
任何字符串
"http[^"]+http 
0

如果您可以使用*。?语法,你可以只看以下内容:

http(.*?)http 

如果它存在,拒绝url。

0

以http开始,有另一个http之前的报价是字符串:

^http[^"]*http 

但是,虽然这正好回答你的问题,我怀疑你可能想呃克莱姆的答案,而不是;-)

1
http://www.example.com/apage.htmlhttp://www.example.com/apage.html 

这实际上是一个有效的URL!所以你应该小心一点,不要在其他中间发生'http://'的URL。只检测“翻番”的网址,你可以使用后向引用:

"(https?://[^"]*)\1" 

(这是一个非标准的正则表达式的功能,但最现代化的实现有它。)

使用正则表达式来处理HTML是一个糟糕的理念。 HTML不能可靠地被正则表达式解析。