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

PHP正则问题:从README提取指定版本的升级通知

正则表达式修正方案:提取指定版本的升级通知

修正后的正则表达式(结合PHP变量)

$pattern = '/== Upgrade Notice ==\s*(?:.*?\n)*?= (' . preg_quote($new_version, '/') . ') =\s*(.*?)(?=\n\s*\n|\Z)/s';

正则规则拆解

  • 锁定升级通知区块:== Upgrade Notice ==\s*(?:.*?\n)*? 先匹配升级通知标题,再非贪婪跳过标题后到目标版本前的所有无关内容,确保不会越过目标版本。
  • 精准匹配指定版本:= (' . preg_quote($new_version, '/') . ') = 用preg_quote转义版本号中的特殊字符(如.),严格匹配= x.x.x =格式,同时将版本号捕获为组1。
  • 提取多行通知内容:(.*?)(?=\n\s*\n|\Z) 非贪婪匹配所有内容,直到遇到空行(\n\s*\n)或文本结尾(\Z),捕获的内容为组2。/s修饰符让.匹配换行符,支持跨多行提取。

PHP函数示例

function extractUpgradeNotice(string $readmeText, string $newVersion): ?array {
    $pattern = '/== Upgrade Notice ==\s*(?:.*?\n)*?= (' . preg_quote($newVersion, '/') . ') =\s*(.*?)(?=\n\s*\n|\Z)/s';
    if (preg_match($pattern, $readmeText, $matches)) {
        return [
            'version' => $matches[1],
            'notice' => trim($matches[2])
        ];
    }
    return null;
}

需求匹配验证

  1. 仅在== Upgrade Notice ==后搜索:正则开头强制匹配该标题,确保范围限定在目标区块内。
  2. 匹配指定$new_version:通过preg_quote处理版本号,避免正则特殊字符干扰,精准匹配目标版本。
  3. 版本号捕获为组1:正则中明确将= x.x.x =内的版本号放在第一个捕获组。
  4. 多行内容遇空行停止:利用正向预查终止匹配,/s修饰符支持跨多行提取,直到空行或文本结束。

内容的提问来源于stack exchange,提问作者Mr. Jo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:11:05