从右向左读取正则表达式不起作用


Reading Regular Expression From Right To left is not working

我需要将字符串Live-tv-channel-nbc-130pm-1000pm-s2-1.html转换为Live-tv-channel-nbc,也就是说我需要删除部分130pm-1000pm-s2-1.html(这些值是动态值)

我尝试了低于代码

$str = "Live-tv-channel-nbc-130pm-1000pm-s2-1.html";
$title = preg_replace("/-(.*?)-(.*?)-(.*?)-('d+).html$/","",$str;
echo $title;

我读到堆栈溢出,在末尾添加$将从右到左读取str,但它似乎不起作用。

注意:此外,我将使用此正则表达式获取值130pm、1000pm、s2、1(这是动态值)

作为Regex的替代方案,您可以使用爆炸和array_chunk 的直接方法来实现这一点

$strArray = explode("-", "Live-tv-channel-nbc-130pm-1000pm-s2-1.html");
$arrayparts   = (array_chunk($strArray, 4));
echo implode("-", $arrayparts[0]);

您可以使用以下短regex来删除最后四个连字符分隔的部分和".html"文件扩展名:

/(?:-[^-]+){4}'.html$/

一个非捕获组((?:)),由一个连字符(-)和一个或多个非连字符([^-]+)组成,重复四次({4}),然后是一个点号('.-注意,该点号已转义!)和html,最后是行尾($)。