You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP正则:仅在特定单词及时间前存在时替换短横线

仅在含from的时间区间中替换短横线为to的正则方案

需要将两个时间值之间的短横线替换为单词to,但仅当第一个时间值前存在单词from时才执行替换。

当前使用的代码会匹配所有带短横线的时间段组合,无法满足仅在from后触发替换的需求:

$text = "The Spa center works 08:00-20:30 every day";
$text = preg_replace('/(\d{1,2})\-(\d{1,2})/','$1 to $2', $text);

期望效果:仅在类似「The Spa center works from 08:00-20:30 every day」的语句中触发替换,最终得到「The Spa center works from 08:00 to 20:30 every day」。

感谢@Wiktor Stribiżew提供的解决方案,该方案支持Unicode字符,同时兼容时间段与短横线之间的空格,修正后的代码如下:

$text = preg_replace('/\bfrom\s+\d{1,2}:\d{2}\s*\K-(?=\s*\d{1,2}:\d{2}(?!\d))/u', 'to', $text);

注:原方案中的替换字符串$1 to $2存在错误,因为正则中未设置捕获组,直接替换为to即可实现需求。

内容的提问来源于stack exchange,提问作者lStoilov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:21:07