gpt4 book ai didi

php - 如何在 PHP 中使用单个正则表达式从字符串中提取所有匹配项?

转载 作者:行者123 更新时间:2023-12-04 16:45:56 25 4
gpt4 key购买 nike

我想使用 PHP 中的正则表达式将所有匹配的模式插入到单个数组中。

例如,我有以下文字:

calculated F 1a5 5W13 153w135 1E55 12_5 1.56 1M55



我的php代码是这样的:
$txt="calculated 1a5 5W13 153w135 1E55 12_5 1.56 1M55";
preg_match_all("/calculated F( ([\d\w_\.]+))+/s",$txt,$matches);
print_r($matches);

我需要像这样的东西:
Array ( [0] =>1a5, [1]=> 5W13, [2]=>  153w135, [3]=>  1E55, [4]=>  12_5, [5]=>  1.56, [6]=> 1M55)

最佳答案

您可以使用以下正则表达式解决方案:

$txt="calculated F 15 513 153135 155 125 156 155";
preg_match_all("/(?:\G(?!\A)|calculated(?:\s+F)?)\s*\K[\w.]+/",$txt,$matches);
print_r($matches[0]);

regex demo .

另请参阅 PHP demo .

请注意,它基本上是带有自定义 \G 的正则表达式添加基于边界以匹配添加特定模式后的连续匹配项。请注意您的 [\d\w_\.][\w.] 相同如 \w匹配什么 \d_比赛。

图案详情 :
  • (?:\G(?!\A)|calculated(?:\s+F)?) - 前一个匹配的结尾( \G(?!\A)\G 本身匹配字符串的开头或前一个匹配的结尾,因此, (?!\A) 减去字符串位置的开头)或 calculated + 1 或 - 可选 - 更多空格 + F (与 calculated(?:\s+F)? 分支匹配)
  • \s* - 零个或多个空格
  • \K - 匹配重置运算符
  • [\w.]+ - 1 个或多个数字、字母、_.人物。
  • 关于php - 如何在 PHP 中使用单个正则表达式从字符串中提取所有匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44849267/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com