2010-03-08 18 views
5

relacionados con mi previous question, tengo una cadena en el siguiente formato:expresión regular para extraer el texto, bien sea entre corchetes o rizado

this {is} a [sample] string with [some] {special} words. [another one] 

¿Cuál es la expresión regular para extraer las palabras dentro de cualquiera plaza o llaves, es decir.

{is} 
[sample] 
[some] 
{special} 
[another one] 

Nota: En mi caso de uso, los soportes no se pueden anidar. También me gustaría conservar los caracteres adjuntos, de modo que pueda distinguir entre ellos al procesar los resultados.

+0

¿Qué pasa si la cadena es 'bla [{] bla {]} '? – kennytm

Respuesta

7

En pocas o (|) las diferentes cosas que desea hacer coincidir juntos:

\[.*?\]|\{.*?\}

2

Ésta parece funcionar:

[[{].*?[}\]] 

O esta otra:

\[.*?\]|{.*?} 

Si se desea capturar los casos mencionados en los comentarios a continuación.

Puede usar un probador de expresiones regulares en línea para probar estas cosas. Creo que http://gskinner.com/RegExr/ es una de las opciones más fáciles de usar.

+1

Esto fallará en el caso de [...}. –

+0

Editado para eliminar un '' 'extraño. –

+0

@Robert, dijo que eso no sucede en su texto, ¿verdad? –

Cuestiones relacionadas