Ну я смог придумать вот такой вариант:
$string = "some text
[url]http://dvz.local/index/index/regionId/28[/url]
<a href=\"http://stuff.ru/roadmap_page.php\">wetrwetwert</a> [url=https://192.168.3.192/roadmap_page.php]qqqqqqqqq[/url]
[URL]http://www.192.168.3.192/roadmap_page.php#qwe[/URL]";
preg_match_all('#(http|https)://([^\s]*)(192.168.3.192|stuff.ru)([^\s]*)#', $string, $matches);
var_dump($matches);
Он проще в плане добавления нового домена, но есть проблема с окончанием:
array(3) {
[0]=>
string(49) "http://stuff.ru/roadmap_page.php">wetrwetwert</a>"
[1]=>
string(54) "https://192.168.3.192/roadmap_page.php]qqqqqqqqq[/url]"
[2]=>
string(51) "http://www.192.168.3.192/roadmap_page.php#qwe[/URL]"
}
Т.е. остается последний сегмент тега ссылки. Как его убрать в этой же регулярке, чтоб не цеплять потом str_replace или preg_replace. По сути надо делать отсечения по таким символам - пробел, [, (, ", ' . Но что-то не выходит прикрутить к регулярке. Как это грамотнее сделать?
Решение, полностью удовлетворяющее поставленную задачу.
(http|https)://([^\s]*)(192.168.3.192|stuff.ru)([^\s\[\'\"\]]*)
Спасибо всем кто откликнулся и натолкнул на мысл!