2017-03-08 3 views
1

J'essaie d'analyser le contenu et de trouver l'URL de Soundcloud. Mon expression régulière fonctionne mais n'arrête pas de capturer après l'espace.url: arrête de capturer après l'espace

$re = '/((http:\/\/(soundcloud\.com\/.*|soundcloud\.com\/.*\/.*|soundcloud\.com\/.*\/sets\/.*|soundcloud\.com\/groups\/.*|snd\.sc\/.*))|(https:\/\/(soundcloud\.com\/.*|soundcloud\.com\/.*\/.*|soundcloud\.com\/.*\/sets\/.*|soundcloud\.com\/groups\/.*)))/i'; 

Comme vous pouvez le voir ici https://regex101.com/r/4BZhlu/1 il ne s'arrête pas lorsque l'URL est en ligne.

Merci d'avance.

+1

Remplacer tous les '' * avec '\ S *'.. –

Répondre

2

Cette regex est compliquée. Tout d'abord, comme l'a déclaré Wiktor, remplacer le .* par \S* (ce qui signifie tout sauf un caractère espace).

Ensuite, vous pouvez les cas jusqu'à regroupe:

(https?:\/\/(soundcloud\.com\/\S*|snd\.sc\/\S*)) 

demo

+0

Merci @ThomasAyoub & @CasimireHippolyte voici ma dernière regex: '$ re = '/ (https?: \/\ /)? (Soundcloud \ .com \/\ S * | snd \ .sc \/\ S *)/i '; ' https://regex101.com/r/3jgPki/2 – mica