从这个数组中,我想用正则表达式解析括号内的值,
我使用这个模式 => [([^]]+)]
Array
(
[0] => [DATA_1_A]
[1] => [DATA_1_B] [DATA_2_B]
[2] => [DATA_1_C] [DATA_2_C] [DATA_3_C]
)
并将值推送到多维数组。
喜欢这个。
Array
(
[0] => Array
(
[0] => DATA_1_A
)
[1] => Array
(
[0] => DATA_1_B
[1] => DATA_2_B
)
[2] => Array
(
[0] => DATA_1_C
[1] => DATA_2_C
[2] => DATA_3_C
)
)
并使用正则表达式和array_map:
$new = array_map(function($i) {
if(preg_match_all('/[([^]]+)]/', $i, $m)) return $m[1];
return $i; }, $arr);
演示
假设您的数据格式一致,您可以在没有正则表达式的情况下执行此操作。去掉第一个和最后一个括号,然后将行分开] [
:
$output = array();
foreach ($data as $line) {
$line = trim($line, '[]');
$output[] = explode('] [', $line);
}
例
或者使用正则表达式使用模式~b([w_d]+)b~
来匹配单词字符、数字和下划线:
$output = array();
foreach ($data as $line) {
preg_match_all('~b([w_d]+)b~', $line, $matches);
if (!empty($matches[1])) {
$output[] = $matches[1];
}
}
例
$array; //your initial array
$output = []; //result array
foreach($array as $key => $value){
$output[$key] = explode("] [", substr($value, 1, -1));
}
在这里,我们去掉第一个和最后一个括号,然后用"] ["拆分。