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.
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.

- Rejestracja:około 22 lata
- Ostatnio:około 4 godziny
- Postów:6653
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

- Rejestracja:ponad 17 lat
- Ostatnio:2 dni
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
.

- Rejestracja:ponad 17 lat
- Ostatnio:2 dni
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/

- Rejestracja:ponad 21 lat
- Ostatnio:2 minuty
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));