RegExp obtenant le lien de String sauf plusieurs www

Nov 29 2020

lorsque j'essaye d'obtenir des liens de String tels que

"Bonjour le monde https://www.sample.com/voices/2020/my-sound-www.sample.com"

J'obtiens plusieurs liens à partir d'ici parce que j'en ai plusieurs www, comment puis-je sauf cela?

production:

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

cette sortie est incorrecte et cela devrait être un lien et non deux liens

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

Mon modèle regex:

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

Réponses

1 WiktorStribiżew Nov 30 2020 at 05:04

Vous pouvez utiliser

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

Ici, le modèle est

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

Voir la démo regex

Détails :

  • (?:https?:(?:\\?\/\\?\/|www\.)|www\.)- http, suivi d'un caractère optionnel s, puis :puis soit //avec un optionnel \avant chaque /ou www., juste ouwww.
  • [^\s<>"']*- zéro caractères ou plusieurs autres que les espaces, <, >, "et'
  • \.mp3- une .mp3chaîne.