Regex.Dividir todo dentro de corchetes []

Soy realmente un n00b cuando se trata de expresiones regulares. He estado tratando de dividir una cadena dondequiera que haya un [----anything inside-----] por ejemplo.

string s = "Hello Word my name_is [right now I'm hungry] Julian";
string[] words = Regex.Split( s, "------");

El resultado sera "Hello Word my name_is " y " Julian"

preguntado el 12 de junio de 12 a las 18:06

has probado esto? \[[a-zA-Z1-9]*\] -

3 Respuestas

La expresión regular que desea utilizar es:

Regex.Split( s, "\\[.*?\\]" );

Los corchetes son caracteres especiales (que especifican un grupo de caracteres), por lo que deben escaparse con una barra invertida. Dentro de los corchetes, desea cualquier secuencia de caracteres EXCEPTO un corchete cerrado. Hay un par de maneras de manejar eso. Una es especificar [^\]]* (especificando explícitamente "no es un corchete cerrado"). El otro, como lo usé en mi respuesta, es especificar que la coincidencia no es codiciosa colocando un signo de interrogación después. Esto le dice al procesador de expresiones regulares que no consuma con avidez tantos caracteres como pueda, sino que se detenga tan pronto como coincida la siguiente expresión.

Respondido el 12 de junio de 12 a las 18:06

Y, si simplemente desea eliminar ese texto, puede usar Regex.Replace( s, "\\[.*?\\]", String.Empty ); - JDB

@"\[.*?\]" coincidirá con los corchetes del texto

Respondido el 12 de junio de 12 a las 18:06

Otra forma de escribirlo:

Regex.Split(str, @"\[[^]]*\]");

Respondido el 12 de junio de 12 a las 18:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.