2017-03-08 66 views
1

我尝试解析内容并找到Soundcloud网址。我的正则表达式可以工作,但不会在空间后停止捕捉。url:停止空间捕获

$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'; 

正如你可以在这里看到https://regex101.com/r/4BZhlu/1当URL是直列它不会停止。

在此先感谢。

+1

替换所有'*'和'\ S *'。 –

回答

2

这个正则表达式很复杂。首先,如Wiktor所述,将.*替换为\S*(这意味着除空格外的任何内容)。

然后,您可以重新组合下最高:

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

demo

+0

感谢@ThomasAyoub和@CasimireHippolyte 这里是我的最终正则表达式: '$ re ='/(https?:\/\ /)?(soundcloud \ .com \/\ S * | snd \ .sc \/\ S *)/ i';' https://regex101.com/r/3jgPki/2 – mica