我需要通过搜索字符串来创建一个数组,以便出现'['后跟0或更多字符后跟']'。
我的测试字符串:
$string="[item 1] [2] [] [item3]";
以上所有必须匹配。
我认为这样做的正则表达式是
\[*\]
但是如何从字符串中创建一个数组呢?我使用
吗?preg_match_all("\[*\]", $string, $matches);
答案 0 :(得分:2)
preg_match_all('/\[.*?\]/', $string, $matches);
或
preg_match_all('/\[[^\[\]]*\]/', $string, $matches);
第一个看到一个结束括号时会立即停止匹配,但如果它首先看到一个,它将匹配一个左括号。也就是说,如果它出现在输入中,它将匹配"[ [foo]"
。
第二个更强大,因为只能找到适当平衡的方括号;即,它们不能包含方括号。如果括号可以嵌套,则正则表达式都不起作用;这是一个更复杂的问题。
答案 1 :(得分:1)
关闭:
preg_match_all("!\[.*?\]!", $string, $matches);
然后$matches[0]
将包含字符串。
进行了三项修改:
答案 2 :(得分:0)
尝试preg_split()