Non ne so molto sulle espressioni regolari. Non mi sono mai servite, finora. In pratica e' un modo compatto per indicare un insieme di "espressioni" (stringhe) usando una stringa.
La parte teorica e' parecchio astrusa, e non l'ho mai approfondita.
Qui trovi qualcosa relativo a Java:

RegEx Recipes

Un esempio.
Invece di:
codice:
        theString = theString.replaceAll("[B]","");
        theString = theString.replaceAll("[b]","");
ti basta usare

codice:
        theString = theString.replaceAll("(?i)[B]","");
dove (?i) significa "ignora il case"

Per raggruppare piu' oggetti si unano le parentesi tonde, separandoli con il pipe. Esempio:

codice:
theString = theString.replaceAll("(?i)(
|[b]|[i]|<span>)","");