Regex - jak odczytać numer pliku w tym konkretnym linku?

0

Cześć.
Pisze w C#, .NET i mam problem, który polega na tym, że nie umiem napisać wyrażenia regularnego do tego konkretnego linku:
http://www.filesonic.com/file/4207190105/Jamie_Lidell-Multiply-(WARPCD131)-CD-FLAC-2005-dL.rar
Ćwiczę wyr. regularne i wziąłem byle co. Chce wyciągnąć ten numer 4207190105.
Napisałem:
"file/([0-9]+)/Jamie_Lidell-Multiply-(WARPCD131)-CD-FLAC-2005-dL.rar"
Nie działa.
Proszę o pomoc.

0
Zenon napisał(a)

Cześć.
Pisze w C#, .NET i mam problem, który polega na tym, że nie umiem napisać wyrażenia regularnego do tego konkretnego linku:
http://www.filesonic.com/file/4207190105/Jamie_Lidell-Multiply-(WARPCD131)-CD-FLAC-2005-dL.rar
Ćwiczę wyr. regularne i wziąłem byle co. Chce wyciągnąć ten numer 4207190105.
Napisałem:
"file/([0-9]+)/Jamie_Lidell-Multiply-(WARPCD131)-CD-FLAC-2005-dL.rar"
Nie działa.
Proszę o pomoc.

W wyrażeniu zamieniłem nawiasy otwierający i zamykający na kropki. Działa. Nie wiem jednak co takiego robią te nawiasy, że trzeba je zamieniać w dowolny znak? Będę wdzięczny jeżeli ktoś mi to wytłumaczy.

0

Nawiasy to znaki specjalne:

Pomiędzy nawiasami okrągłymi ( i ) grupuje się symbole, do ich późniejszego wykorzystania.

http://pl.wikipedia.org/wiki/Wyra%C5%BCenie_regularne

Kropka to dowolny znak, nawiasy powinieneś poprzedzić znakami \ (backslash) i powinno załapać ;)

Ja bym poszedł na łatwiznę i numerek wyłapał wyrażeniem:
http://www.filesonic.com/file/(.*)/Jamie_Lidell-Multiply-\(WARPCD131\)-CD-FLAC-2005-dL\.rar

0

Przecież już wcześniej w tym samym wyrażeniu użyłeś nawiasów w inny sposób? O.o Nawiasy służą do grupowania wyrażeń w celu uzyskania odpowiednich podczęści lub by użyć alterantywy, np. (ja|ty|ono) dopasuje 'ja' lub 'ty' lub 'ono'. Jeśli chcesz dopasować konkretnie nawias to musisz użyć \( i \). Tak samo źle używasz kropki przed rar.

0

Dzięki. Już rozumiem. Żeby dać backslashe musiałem dać jeszcze "@" przed wyrażeniem lub podwoić backslash.

0
Zenon napisał(a)

Dzięki. Już rozumiem. Żeby dać backslashe musiałem dać jeszcze "@" przed wyrażeniem lub podwoić backslash.

Co się dziwisz skoro nie podałeś języka programowania? Mi bez @ przed czy podwajania backslashy działa, patrz no ino:

puts "Pasuje" if 'http://www.filesonic.com/file/4207190105/Jamie_Lidell-Multiply-(WARPCD131)-CD-FLAC-2005-dL.rar' =~ /([0-9]+)\/Jamie_Lidell-Multiply-\(WARPCD131\)-CD-FLAC-2005-dL\.rar/
0

jak czegoś nie wiemy jak zrobić na regexach to zawsze można zrobić „po staremu”:

string url = "http://www.filesonic.com/file/4207190105/Jamie_Lidell-Multiply-(WARPCD131)-CD-FLAC-2005-dL.rar";
long number = Int64.Parse(url.Substring(30, url.IndexOf('/',30)-30));
0

Panie, ino podałem język programowania.

0

Swoją drogą, czy podawanie tego typu linków na forum jest w pełni legalne :D ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1