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

如何编写正则表达式提取由两个点分隔(首个点可缺省)的字符串?

正则表达式提取中间字符串解决方案

你需要提取被两个点分隔的目标字符串,哪怕开头没有第一个点也能生效,之前写的正则/\.([^\.]+)\./因为强制要求前后都有点,所以只能匹配两个点都存在的情况。

示例场景

  • 示例1:
    源字符串:fwe4d.tobe-extracted.s4red
    期望输出:tobe-extracted
  • 示例2:
    源字符串:tobe-extracted.s4red
    期望输出:tobe-extracted

修正后的正则方案

用非捕获组匹配「字符串开头或者一个点」,就能兼容开头有无点的两种情况:

$pattern = "/(?:^|\.)([^\.]+)\./";

正则解释

  • (?:^|\.):非捕获组,^匹配字符串开头,\.匹配单个点,二者选其一,用来定位目标内容的前边界
  • ([^\.]+):捕获组,匹配任意多个非点字符,这就是我们要提取的核心内容
  • \.:匹配目标内容后的点,确定后边界

使用示例

// 处理示例1
preg_match($pattern, "fwe4d.tobe-extracted.s4red", $matches);
echo $matches[1]; // 输出 tobe-extracted

// 处理示例2
preg_match($pattern, "tobe-extracted.s4red", $matches);
echo $matches[1]; // 输出 tobe-extracted

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 01:20:33