preg_match('/([a-zA-Z0-9]+[\[][^\]]+[\]])$/i',"test1 test2[...]", $matches);
обратите внимание на +
после [a-zA-Z0-9]
написано один или несколько буквенно-цифровых символов
(
и )
вокруг всего выражения позволят вам уловить все выражение.
Поскольку ваш контент около []
, я изменил .*
на [^\]]
, поскольку регулярное выражение жадное в случае test2[.....] test3[sadsdasdasdad]
оно будет записываться до конца, так как есть ]
.
Также обратите внимание, что, поскольку вы используете $
, он всегда будет соответствовать вещам, в конце концов, я не совсем уверен, что вы собираетесь делать.
Вы можете посмотреть это для справки.