url: space 后停止捕获

url: stop capturing after space

我尝试解析内容并找到 Soundcloud url。我的正则表达式有效,但在 space.

之后不停止捕获
$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 内联时停止。

提前致谢。

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

然后,您最多可以重新分组案例:

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

demo