2012-02-26 45 views
2

我正在编写一个发现服务,它接收一个URL并返回位于该页面的HTML。正则表达式来查找HTML中的WSDL文件

从该页面,我需要“刮”所有的WSDL URL。

所以我需要类似下面的东西,但我不知道如何指定正则表达式传递到模式匹配。

string wsdlPattern = //SOME REGEX THAT MATCHES WSDL http:{address}wsdl 
Regex wsdlRegex = new Reges(wsdlPattern); 
MatchCollection matches = wsdlRegex.Match(html); 

有人可以请帮我指出我怎么能做到这一点?

回答

2

试试这个:

http://[^\s]*?.wsdl

常规文本部分是显而易见的:它需要开始http://.wsdl结束。 [^\s]意味着“任何非空白字符”和*?意思是“尽可能少”(这是必要的情况下,你有这样的事情http://www.blah.com/a.wsdl<br>http://www.blah.com/b.wsdl。如果没有?,你会认为整个事情匹配作为一个字符串)。

这并不完美,但它应该让你开始。

如果你想用正则表达式来打,这是一个很好的资源: http://www.gskinner.com/RegExr

1

我用下面RE为validting WSDL的网址,你可以看到,我不得不检查,如果发现有“结束WSDL? “

RE:(http|https):\/\/[^\s]*?.\?wsdl

忽略大小写:(?i)(http|https):\/\/[^\s]*?.\?wsdl(?-i)

(测试用例:http://localhost/WebService1.asmx?wSDl

0

的WSDL可以使用FTP和文件,以及因此被上传:

(http|https|ftp|file)://[^\s]*?.(wsdl|WSDL) 

希望这有助于!

相关问题