RegExp erhält Link von String außer mehreren www

Nov 29 2020

wenn ich versuche, Links von String wie zu bekommen

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

Ich bekomme mehrere Links von hier, weil ich mehrere habe www. Wie kann ich das ausnehmen?

Ausgabe:

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

Diese Ausgabe ist falsch und das sollte ein Link sein, nicht zwei Links

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

Mein Regex-Muster:

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

Antworten

1 WiktorStribiżew Nov 30 2020 at 05:04

Sie können verwenden

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

Hier ist das Muster

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

Siehe die Regex-Demo

Details :

  • (?:https?:(?:\\?\/\\?\/|www\.)|www\.)- http, gefolgt von einem optionalen sZeichen, dann :und dann entweder //mit einem optionalen Zeichen \vor jedem /oder www., nur oderwww.
  • [^\s<>"']*- null oder mehr Zeichen außer Leerzeichen, <, >, "und'
  • \.mp3- eine .mp3Schnur.