RegExp pobieranie linku z String z wyjątkiem wielu www

Nov 29 2020

kiedy próbuję uzyskać linki z String, takie jak

"Witaj świecie https://www.sample.com/voices/2020/my-sound-www.sample.com"

otrzymuję stąd wiele linków, ponieważ mam wiele www, jak mogę to z wyjątkiem tego?

wynik:

  1. https://www.sample.com/voices/2020/my-sound-www.sample.com
  2. www.sample.com

to wyjście jest niepoprawne i powinno to być jedno łącze, a nie dwa łącza

https://www.sample.com/voices/2020/my-sound-www.sample.com

Mój wzorzec wyrażenia regularnego:

r"((https?:www\.)|(https?:\/\/)|(www\.))[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9]{1,6}(\/[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)?"

Odpowiedzi

1 WiktorStribiżew Nov 30 2020 at 05:04

Możesz użyć

final reg = RegExp(r'(?:https?:(?:\\?\/\\?\/|www\.)|www\.)[^\s<>"'']*\.mp3');
final m = reg.firstMatch(test);
print(m.group(0));
// => https://www.caferilik.com/wp-content/uploads/2020/11/Anne-Baba-Biz-Suçluyuz-Muhafazakar-Ailelerde-Kuşak-Çatışması-Sesli-Kitap-www.caferilik.com_.mp3

Oto wzór

(?:https?:(?:\\?\/\\?\/|www\.)|www\.)[^\s<>"']*\.mp3

Zobacz demo wyrażenia regularnego

Szczegóły :

  • (?:https?:(?:\\?\/\\?\/|www\.)|www\.)- http, a następnie z opcjonalnym swęgla odbarwiającego, a potem :, a następnie albo //z opcjonalnie \przed każdym /lub www., tak czywww.
  • [^\s<>"']*- zero lub więcej znaków inne niż białe znaki, <, >, "i'
  • \.mp3- .mp3sznurek.