Piszę usługę wykrywania, która pobiera adres URL i zwraca kod HTML znajdujący się na tej stronie.

Z tej strony muszę "zeskrobać" wszystkie adresy URL WSDL.

Potrzebuję więc czegoś takiego jak poniżej, ale nie jestem pewien, jak określić wyrażenie regularne, które ma zostać przekazane do dopasowania wzorca.

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

Czy ktoś może mi pomóc dowiedzieć się, jak mogę to zrobić?

2
TheJediCowboy 26 luty 2012, 06:29

3 odpowiedzi

Najlepsza odpowiedź

Spróbuj tego:

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

Zwykłe części tekstu są oczywiste: musi zaczynać się od http:// i kończyć na .wsdl. [^\s] oznacza „dowolny znak inny niż biały”, a *? oznacza „jak najmniej” (jest to konieczne w przypadku, gdy masz coś takiego jak http://www.blah.com/a.wsdl<br>http://www.blah.com/b.wsdl. Bez ? , dopasujesz to wszystko jako jeden ciąg).

To nie jest idealne, ale powinno Cię zacząć.

Jeśli chcesz pobawić się wyrażeniem regularnym, to jest świetny zasób: http://www.gskinner.com/RegExr

2
chroipahtz 26 luty 2012, 06:43

Użyłem poniższego RE do walidacji adresów URL WSDL, jak widać, musiałem sprawdzić, czy kończą się na „?wsdl

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

Zignoruj ​​przypadek : (?i)(http|https):\/\/[^\s]*?.\?wsdl(?-i)

(Przypadek testowy: http://localhost/WebService1.asmx?wSDl)

1
ablaze 10 wrzesień 2014, 00:35

Wsdls można przesyłać za pomocą FTP i plików, dlatego:

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

Mam nadzieję że to pomoże!

0
tk_ 16 grudzień 2014, 11:12