通过匹配模式分组字符串

时间:2015-02-04 10:14:23

标签: php regex preg-match

我正在寻找一种方法来对字符串进行分组(例如在数组中),如果它们具有匹配的模式。 例如,我有一个关联数组,这些字符串作为键:

1111567
1111568
1111608
2222345
2222495

现在我想通过字符串数组进行迭代,并将所有'1111','2222'等组合在一起。

2 个答案:

答案 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);