Preg_split & Regex - 删除括号、文本和冒号

Preg_split & Regex - Removing brackets, text and colons

我想了解如何使用正则表达式和 preg_split 拆分字符串,但我似乎无法理解在线的解释。 特别是括号的选择器似乎无法创建。

我正在尝试进行 2 种不同的分割。示例如下:

  1. "[group:text]" -> "text"
  2. "icon_type:[search]:[asterisk]" -> array of 3 variables: [0]->"icon_type" [1]->"search" [2]->"asterisk"

执行此操作的两个正则表达式是什么?

我已经尝试了以下示例 1:/\[(group:)\]/,遗憾的是这没有任何删除。

使用匹配比拆分更容易。使用 preg_match_all 使用此正则表达式:

\b\w+(?=[:\]](?![^\]\[]*\]))

RegEx Demo

代码:

$re = '/\b\w+(?=[:\]](?![^\]\[]*\]))/'; 
$str = "[group:text]\nicon_type:[search]:[asterisk]"; 

preg_match_all($re, $str, $matches);

print_r($matches);

此正则表达式匹配一个使用 \w+ 的词,该词必须后跟 :] 使用正先行断言 (?=[:\]]) 但它也不能后跟 0或更多非 [] 字符和 ] 使用否定先行断言 (?![^\]\[]*\]).