0

是否有可能有一个 PHP 正则表达式来提取从第一个 ] 到最后一个 [ 的内容?

例如,如果我有以下字符串:

$string = [shortcode]You write a shortcode by using ([])[/shortcode]

我想提取:

You write a shortcode by using brackets ([])

并将其存储在变量中。要提取的内容可以是任何东西。提前致谢。

4

4 回答 4

3

您应该使用捕获组来确保匹配结束标记。

\[(\w+)\].*?\[/\1\]

这将匹配内部的一个单词[]并继续运行,直到在内部找到相同的单词[/...]

于 2012-04-23T21:20:07.110 回答
1

正则表达式默认是贪婪的,所以这可以很好地完成工作:

/\](.*)\[/

为了让它在 PHP 中正常工作,你可以这样做:

preg_match('/\](.*)\[/', $text, $matches);

$result = $matches[1];
于 2012-04-23T21:19:06.033 回答
0

这可以做,你需要什么

[^\]]\](.*)\[[^\[]
于 2012-04-23T21:25:46.880 回答
0

这有效:

preg_match( '@\](.*)\[@', $string, $matches);
print_r($matches);
于 2012-04-23T21:31:00.107 回答