Solo per farti sapere, [] è per le “classi di caratteri”. Nelle espressioni regolari di Perl, e probabilmente anche in quelle di Ruby, \b è un “confine di parola” al di fuori di una classe di caratteri e “backspace” all’interno di una classe di caratteri. In C, ‘\b’ è sempre backspace (<control-H> per essere precisi). Il backspace non è un carattere utile nella maggior parte dei casi, mentre i confini di parola lo sono, da qui la ridefinizione.
Per usare un’espressione regolare per catturare “_forbidden_” o “forbidden”, userei probabilmente:
\b_?forbidden_?\b
(So anche come codificare tutte le mie lettere in &#xXX; per evitare trucchi Unicode o l’espressione regolare.)