Hmm, works for me
PHP Code:
$regex = "~\[T-\d+-[A-Z]+\]~";
$string = "asdasd[T-111-DONE]ewrew[T-222-CANCEL]asdasd[T-333-DELETE]asdasd
asdasd[T-444-DONE]ewrew[T-555-CANCEL]asdasd[T-666-DELETE]asdasd
asdfasdfasd[T-777-NEWLINE]ewr";
echo "<pre>";
$matches = array();
preg_match_all($regex, $string, $matches);
print_r($matches);
echo "</pre>";
/*
Array
(
[0] => Array
(
[0] => [T-111-DONE]
[1] => [T-222-CANCEL]
[2] => [T-333-DELETE]
[3] => [T-444-DONE]
[4] => [T-555-CANCEL]
[5] => [T-666-DELETE]
[6] => [T-777-NEWLINE]
)
)
*/
The ? makes it non greedy, eg
PHP Code:
$str = '<p>para 1</p><p>para2</p>';
echo preg_replace('~<p>.+</p>~', ' -para- ', $str); // -para- even though there are 2
echo '<br>';
echo preg_replace('~<p>.+?</p>~', ' -para- ', $str); // -para- -para-
Bookmarks