我正在寻找一种方法来对字符串进行分组(例如在数组中),如果它们具有匹配的模式。 例如,我有一个关联数组,这些字符串作为键:
1111567
1111568
1111608
2222345
2222495
现在我想通过字符串数组进行迭代,并将所有'1111','2222'等组合在一起。
答案 0 :(得分:1)
不确定是否了解您的需求,但如何:
$arr = array(
'1111567' => 'a',
'1111568' => 'b',
'1111608' => 'c',
'2222345' => 'd',
'2222495' => 'e',
);
$res = array();
foreach ($arr as $k => $v) {
preg_match('/^(\d{4})/', $k, $m);
$res[$m[1]] .= $v;
}
print_r($res);
<强>输出:强>
Array
(
[1111] => abc
[2222] => de
)
答案 1 :(得分:0)
(((\d)\3{1,})\d+(?:(?:\n|$)\2\d+)*)
试试这个。抓住捕获1或组1.参见演示。
https://regex101.com/r/vD5iH9/70
$re = "/(((\\d)\\3{1,})\\d+(?:(?:\\n|$)\\2\\d+)*)/i";
$str = "1111567\n1111568\n1111608\n2222345\n2222495";
preg_match_all($re, $str, $matches);