Ammettiamo di avere una stringa di questo tipo:
_MATCH_MATCH_
e vogliamo trovare tutti i riferimenti di "MATCH" che siano circondati da "_". Vogliamo sostituire tutti questi riferimenti con "*".
preg_replace('/_MATCH_/', '*', $text);
# Risposta: "*MATCH_"
Questo sistema non funziona, sia perchè sostituisce solo il primo "MATCH", sia perchè la sostituzione elimina anche i "_" (e non è quello che vogliamo fare).
La soluzione è questa:
preg_replace('/(?<=_)MATCH(?=_)/', '*', $text)
# Risposta: "_*_*_"