Wyrażenia regularne i zamiana URL

szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

inaudi ten post 10-03-2010 10:03


Użytkownik
Status: Offline
Dołączył: 12-01-2010

Witam,
mam taki problem, mam ciąg postaci

http://www.strona1.plhttp://strona2.pl&2hsj kl2po;http://strona3.pl

chciałbym zamienić ten ciąg na klikalne linki, tak aby otrzymać w wyniku 3 linki do stron, czy ma ktoś pomysł jak to rozwiązać?
Znalazłem takie rozwiązanie:

Regex.Replace(ciagWejsciowy, @"(\bhttps?://[^;]+\b)", @"<a href=""$0"">$0</a>")

jednak tutaj znakiem który musi rozdzielać poszczególne adresy jest ";", a chciałbym zrobić tak aby nie odgraniczać żadnym znakiem poszczególnych adresów, tylko każdy zaczynający się od "http://" traktować jako osobny.
Będę niezmierni wdzięczny za wszelką pomoc.
Pozdrawiam.
Przejdź na górę strony
cytuj
ŁF ten post 10-03-2010 13:58
avatar

Moderator
Status: Offline
Dołączył: 10-10-2002

w eclipse działa taki regexp: (http\:\/\/.*?)(?=http)|(http\:\/\/.*$)
widzę jeden problem - co zrobisz, kiedy po linku będzie tekst? skąd będziesz wiedział, że link się skończył i teraz jest już tylko tekst?
my programs never have bugs, they just develop random features.
user image
Przejdź na górę strony
cytuj
inaudi ten post 10-03-2010 14:21


Użytkownik
Status: Offline
Dołączył: 12-01-2010

właśnie tu jest problem, chciałbym osiągnąć efekt w którym nowy link byłby brany od wystąpienia znaków "http://" a co będzie dalej już mnie nie interesuje, więc całość aż do wystąpienia kolejnego "http://" zamieniam na linka, zakładam że takie coś da się zrobić, ale pomimo wielu rozwiązań do podobnych problemów nie znalazłem takiego do mojego przypadku.
Przejdź na górę strony
cytuj
ŁF ten post 10-03-2010 14:59
avatar

Moderator
Status: Offline
Dołączył: 10-10-2002

no to podałem Ci rozwiązanie, nawet jeśli regexp pod .net ma nieco inną składnię, to zasada zostaje identyczna.
my programs never have bugs, they just develop random features.
user image
Przejdź na górę strony
cytuj
inaudi ten post 10-03-2010 15:05


Użytkownik
Status: Offline
Dołączył: 12-01-2010

Super, działa. Dzięki wielkie, myślałem że skoro zaznaczyłeś że działa w Eclipse to tylko w Eclipse:)
Pozdrawiam!
Przejdź na górę strony
cytuj
MSM ten post 10-03-2010 16:24
avatar

Użytkownik
Status: Offline
Dołączył: 24-04-2009
Skąd: Google Search
Regexy są podobne we wszystkich językach programowania. Dlatego warto się ich uczyć, a nie kombinować z Substringami i IndexOf czy podobnymi, bo wielu tak robi...
#define private public   // beware classes, I`m coming!
:D
Przejdź na górę strony
cytuj
ŁF ten post 10-03-2010 22:33
avatar

Moderator
Status: Offline
Dołączył: 10-10-2002

regexp jest znacznie wolniejszy od wielu indexof/substring...
my programs never have bugs, they just develop random features.
user image
Przejdź na górę strony
cytuj
MSM ten post 11-03-2010 16:40
avatar

Użytkownik
Status: Offline
Dołączył: 24-04-2009
Skąd: Google Search
(znowu odpowiadam z opóźnieniem, sorry)

regexp jest znacznie wolniejszy od wielu indexof/substring...

Ja nie mówię żeby nie używać indexOf/Substring, ale widziałem wiele rozwiązań wykonujących skomplikowane modyfikacje ciągów za pomocą powyższych (w tym najlepsze moje - kiedy sobie przypomnę metodę posiadającą coś koło 8-9 (!) zagnieżdżonych pętli i if-ów, dwoma goto (!!), zajmującą jakieś 1.5 strony w IDE (!!!) - i pewnie to wszystko się dało zrobić jednym, dwoma regexami...) to ogarniają mnie koszmary.
#define private public   // beware classes, I`m coming!
:D
Przejdź na górę strony
cytuj
szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

1 użytkownik(ów) przegląda ten temat (1 gości)
(żadnych zarejestrowanych użytkowników)

Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0266 sek. (zapytań SQL: 10)