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

PHP正则表达式匹配字符串中两个值的问题求助

正则匹配问题解决方案

问题分析

你的正则存在三个核心问题:

  1. 使用|分支匹配导致捕获组结果分散在$matches的不同索引里,无法直接得到期望的一维数组
  2. 错误使用了HTML实体\>和\",但目标字符串里是实际的>和"字符,不需要转义实体
  3. 你只需要提取两个特定值,preg_match_all会匹配所有符合分支的结果,用preg_match更合适

修正后的代码

$string = 'MorText "gets(183,);inc();" for="text">Sweet" Mo';
preg_match('/gets\((\d+)\,.*?>([^"]+)/', $string, $matches);
// 整理出期望的结果数组
$result = [
    (int)$matches[1],
    $matches[2]
];
print_r($result);

正则规则说明

  • gets\((\d+)\,:精准匹配gets(,捕获其中的连续数字(\d+匹配1个及以上数字),直到遇到逗号
  • .*?>:用非贪婪模式匹配任意字符,直到遇到第一个>
  • ([^"]+):捕获>之后到第一个"之前的所有字符([^"]+匹配非双引号的任意字符)

最终输出

Array
(
    [0] => 183
    [1] => Sweet
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:30:01