我有字符串:This is a [[bla]] and i want a [[burp]]
,我需要在数组中放入2个字符串[[bla]]
和[[burp]]
。
我试图使用的正则表达式是:
$pattern = "/\[\[.+\]\]/"
问题是输出为:[[bla]] and [[burp]]
,因为我认为第一个[[
与最后]]
一致
我该如何修复模式?
答案 0 :(得分:4)
答案 1 :(得分:3)
您需要ungreedy repitition (lazy) matching - > *?
仅获取[[ ]]
之间的文字,而不是[[ ]] [[ ]]
之间的文字:
$pattern = "/\[\[(.*?)\]\]/"
另外,您需要matching group才能获得方括号之间的文字而不是括号本身 - > (.*?)
示例:
$string = "This is a [[bla]] and i want a [[burp]]";
$pattern = "/\[\[(.*?)\]\]/";
preg_match_all($pattern , $string, $matches);
var_dump($matches[1]);
输出:
array(2) {
[0]=>
string(3) "bla"
[1]=>
string(4) "burp"
}