Regex / Preg: Sem correspondência, se encontrado

Eu estou tentando fazer algumas pregações PHP. Mas parece que não consigo combiná-lo se eu quiser uma seqüência sem algo nele.

Exemplo:

Hello! My name is [b]Peter Jack[/b]

Se Peter Jack for encontrado com seu sobrenome, ele NÃO corresponderá, mas se for encontrado "[b] Peter [/ b]" será igual.

Qualquer um que eu seja meio ruim em explicar as coisas, comente se há algo mais que você precise para me ajudar a resolver isso.

Outra maneira que eu posso dizer é que, se eu tiver um link para um site, ele vai combinar e fazer as coisas no preg_replace, mas se o link para o website terminar com o mesmo .png (uma imagem) ele não irá corresponder e não fará um link.

example.com/image.png

Não será correspondido porque contém .png

example.com/image

Será correspondido porque nãonão conter .png

questionAnswers(1)

yourAnswerToTheQuestion