Hus*_*yin 4 php regex substring
我想使用 PHP 中的正则表达式将所有匹配的模式插入到单个数组中。
例如,我有以下文字:
计算 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);
Run Code Online (Sandbox Code Playgroud)
我需要像这样的东西:
Array ( [0] =>1a5, [1]=> 5W13, [2]=> 153w135, [3]=> 1E55, [4]=> 12_5, [5]=> 1.56, [6]=> 1M55)
Run Code Online (Sandbox Code Playgroud)
您可以使用以下正则表达式解决方案:
$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]);
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示。
另请参阅PHP 演示。
请注意,它基本上是您的正则表达式,\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 个或多个数字、字母_或.字符。