Preg_split & Regex - 删除括号、文本和冒号
Preg_split & Regex - Removing brackets, text and colons
我想了解如何使用正则表达式和 preg_split 拆分字符串,但我似乎无法理解在线的解释。
特别是括号的选择器似乎无法创建。
我正在尝试进行 2 种不同的分割。示例如下:
"[group:text]" -> "text"
"icon_type:[search]:[asterisk]"
-> array of 3 variables: [0]->"icon_type"
[1]->"search"
[2]->"asterisk"
执行此操作的两个正则表达式是什么?
我已经尝试了以下示例 1:/\[(group:)\]/
,遗憾的是这没有任何删除。
使用匹配比拆分更容易。使用 preg_match_all
使用此正则表达式:
\b\w+(?=[:\]](?![^\]\[]*\]))
代码:
$re = '/\b\w+(?=[:\]](?![^\]\[]*\]))/';
$str = "[group:text]\nicon_type:[search]:[asterisk]";
preg_match_all($re, $str, $matches);
print_r($matches);
此正则表达式匹配一个使用 \w+
的词,该词必须后跟 :
或 ]
使用正先行断言 (?=[:\]])
但它也不能后跟 0或更多非 []
字符和 ]
使用否定先行断言 (?![^\]\[]*\])
.
我想了解如何使用正则表达式和 preg_split 拆分字符串,但我似乎无法理解在线的解释。 特别是括号的选择器似乎无法创建。
我正在尝试进行 2 种不同的分割。示例如下:
"[group:text]" -> "text"
"icon_type:[search]:[asterisk]" -> array of 3 variables: [0]->"icon_type" [1]->"search" [2]->"asterisk"
执行此操作的两个正则表达式是什么?
我已经尝试了以下示例 1:/\[(group:)\]/
,遗憾的是这没有任何删除。
使用匹配比拆分更容易。使用 preg_match_all
使用此正则表达式:
\b\w+(?=[:\]](?![^\]\[]*\]))
代码:
$re = '/\b\w+(?=[:\]](?![^\]\[]*\]))/';
$str = "[group:text]\nicon_type:[search]:[asterisk]";
preg_match_all($re, $str, $matches);
print_r($matches);
此正则表达式匹配一个使用 \w+
的词,该词必须后跟 :
或 ]
使用正先行断言 (?=[:\]])
但它也不能后跟 0或更多非 []
字符和 ]
使用否定先行断言 (?![^\]\[]*\])
.