Ruby regex para despojar BBCode

Estoy tratando de eliminar BBCode de una cadena dada (solo uso gsub con alguna expresión regular).

Aquí hay una cadena de ejemplo:

 The [b]quick[/b] brown [url=http://example.com]fox[/url] jumps over the lazy dog [img=http://example.com/lazy_dog.png] 

Y lo que necesito para dar salida es:

 The quick brown fox jumps over the lazy dog 

Entonces, ¿cuál es una manera de hacer eso? He encontrado varios ejemplos de cómo hacer esto, pero ninguno ha funcionado para mi caso de uso.

Una que he probado: / /\[(\w+)[^w]*?](.*?)\[\/\1]/

Pero eso no atraparía la etiqueta de finalización [img] .

El propósito de esta publicación es mostrar la disparidad en la forma en que se interpreta el BBCode, lo que se debe tener en cuenta al eliminar las tags BBCode al tiempo que se conserva el contenido.

Esto solo eliminará las tags de código BB como se define en esta página .

Sin embargo, puede eliminar más de lo que se considera una etiqueta de código BB válida. Por ejemplo, [b ]Bold[/b] no está en negrita en este comprobador de BBCode , por lo tanto, a la derecha, esas tags deben dejarse solas. Pero [\b] será eliminado por la expresión regular a continuación. También eliminará claramente no BBCode como [\b=something]

Otro ejemplo es [url=http://example.com/ ][/url] (note el espacio). Esto podría estar bien o no, según el analizador BBCode. La expresión regular a continuación ignora la etiqueta de apertura, pero elimina la etiqueta de cierre.

 /\[\/?(?:b|u|i|s|size|color|center|quote|url|img|ul|ol|list|li|\*|code|table|tr|th|td|youtube|gvideo)(?:=[^\]\s]+)?\]/ 

La etiqueta [code] tampoco es tratada correctamente por la expresión regular como se ve en esta demostración . El reemplazo debe dejar [code] entre la etiqueta del code solo.

Este comprobador BBCode permite que [b][b][b]Text[/b][/b][/b] se analice en Text en negrita, pero el otro lo interpreta como [b][b]Text[/b][/b] con la parte [b][b]Text negrita y el rest en negrita. Si permite tags anidadas, la expresión regular no es una buena opción.

    Intereting Posts