是否有可能有一个 PHP 正则表达式来提取从第一个 ] 到最后一个 [ 的内容?
例如,如果我有以下字符串:
$string = [shortcode]You write a shortcode by using ([])[/shortcode]
我想提取:
You write a shortcode by using brackets ([])
并将其存储在变量中。要提取的内容可以是任何东西。提前致谢。
您应该使用捕获组来确保匹配结束标记。
\[(\w+)\].*?\[/\1\]
这将匹配内部的一个单词[]
并继续运行,直到在内部找到相同的单词[/...]
。
正则表达式默认是贪婪的,所以这可以很好地完成工作:
/\](.*)\[/
为了让它在 PHP 中正常工作,你可以这样做:
preg_match('/\](.*)\[/', $text, $matches);
$result = $matches[1];
这可以做,你需要什么
[^\]]\](.*)\[[^\[]
这有效:
preg_match( '@\](.*)\[@', $string, $matches);
print_r($matches);