这个怎么样:
\[element title=(.*)picture=(\d+)\](.*?)(\[caption\](.*)\[/caption\])?\[/element\]
它将匹配两者:
[element title=element title picture=32]Lorem ipsum dolor[caption]Photo by John Doe[/caption][/element]
[element title=element title picture=32]Lorem ipsum dolor[/element]
例子
在 PHP 中,你可以这样使用它:
$regex = '#\[element title=(.*)picture=(\d+)\](.*?)(\[caption\](.*)\[/caption\])?\[/element\]#i';
$text = '[element title=element title picture=32]Lorem ipsum dolor[caption]Photo by John Doe[/caption][/element]';
preg_match ( $regex, $text, $match );
print_r( $match );
该数组$match
将有几个元素。这些是用圆括号(
和)
正则表达式包围的字符串。其中之一是标题文本。
程序执行和输出可以在这里看到 http://ideone.com/vQ1T0
。