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

Zenon
2011-12-13 20:24
Zenon
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.

Pozostało 580 znaków

Zenon
2011-12-13 21:01
Zenon
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.

Pozostało 580 znaków

2011-12-13 21:37

Rejestracja: 16 lat temu

Ostatnio: 7 godzin temu

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

edytowany 6x, ostatnio: Spine, 2011-12-13 21:41

Pozostało 580 znaków

2011-12-13 21:38
Moderator

Rejestracja: 12 lat temu

Ostatnio: 13 godzin temu

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.


Pozostało 580 znaków

Zenon
2011-12-13 22:18
Zenon
0

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

Pozostało 580 znaków

2011-12-13 22:25
Moderator

Rejestracja: 12 lat temu

Ostatnio: 13 godzin temu

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/

Pozostało 580 znaków

2011-12-14 10:20

Rejestracja: 16 lat temu

Ostatnio: 16 godzin temu

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));

Pozostało 580 znaków

Zenon
2011-12-14 14:15
Zenon
0

Panie, ino podałem język programowania.

Pozostało 580 znaków

2011-12-14 14:28

Rejestracja: 16 lat temu

Ostatnio: 7 godzin temu

0

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

Who cares ;) - Patryk27 2011-12-14 15:13

Pozostało 580 znaków

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