Esta es la solución más completa que te podemos dar, sin embargo estúdiala detenidamente y analiza si se adapta a tu proyecto.
Solución:
"How now brown cow.".replaceAll("<[^>]+>", "")
Ya casi estabas ahí 😉
Prueba esto:
str = str.replaceAll("<.*?>", "")
Si bien hay otras respuestas correctas, ninguna da ninguna explicación.
La razón por la que su expresión regular <.*?>.*?|<.*?/>
no funciona porque seleccionará cualquier etiqueta así como todo lo que hay dentro de ellos. Puede verlo en acción en debuggex.
La razón por la que tu segundo intento <.*?>|<.*?/>
no funciona porque seleccionará desde el principio de una etiqueta hasta la primera etiqueta de cierre que sigue a una etiqueta. Eso es un bocado, pero puedes entender mejor lo que está pasando en este ejemplo.
La expresión regular que necesita es mucho más simple: <.*?>
. Simplemente selecciona cada etiqueta, ignorando si está abierta/cerrada. Visualización.
Recuerda que puedes comentar tu experiencia si te ayudó.