The Geek Inside

Julio Carlos Sánchez Blog

Expresiones Regulares en VS2005

Hoy tuve que hacer una search & replace de cierta cadena en el proyecto en el que estoy trabajando actualmente.

La cadena en cuestión es la siguiente .RefreshDataSource(datasource); y la cadena por la que se reemplazaría, seria esta: .DataSource = datasource, el nombre del datasource podía cambiar, así que el search & replace no era tan directa, tendría que emplear una expresión regular :D.

A mi me gusta mucho jugar con expresiones regluares, así que me dije: “adelante”, pues me di a la tarea de escribir la regex y obtuve como resultado:

Cadena a buscar: \.RefreshDataSource\s*\((.*)\);
Reemplazar por: .DataSource = $1;

Cual fué mi sorpesa al ver que si encontraba la cadena, sin embargo al reemplazar fallaba:

Cadena encontrada: grdDatos.RefreshDataSource(datos);
Cadena reemplazada: grdDatos.DataSource = ;

Pensé tal vez me equivoqué y la sintaxis para obtener el grupo de reemplazo se representa así: \1, pues no… no era tampoco así… :(

Dudé de mi habilidad para trabajar con expresiones regulares :’(, y tuve que hacer una oración a San Yahoo y San Google, encontré las siguientes referencias:

En los cuales se explican las diferencias entre las expresiones regulares al usar .Net y en el cuadro de diálogo de search & replace de VS2005, y que existen algo llamado tags que al parecer es un tipo de grupo que se captura y se puede usar en dicho dialogo, sólo que se usan los caracteres: ‘{’ y ‘}’, rodeando la expresión.

Aún no entiendo dos cosas:

  • Porqué no se usan las mismas expresiones regulares en .Net y VS2005?
  • Porque usar un tipo de agrupamiento especial?

En el segundo caso tendré que estudiar más acerca del comportamiento y conveniencias de los tags.

Pues bien, se preguntarán como acaba la historia, y que cadenas usé para llevar a cabo el search & replace:

Cadena a buscar: \.RefreshDataSource\s*\({.*}\);
Reemplazar por: .DataSource = \1;
Cadena encontrada: grdDatos.RefreshDataSource(datos);
Cadena reemplazada: grdDatos.DataSource = datos;

Les recomiendo que si va a usar expresiones regulares en el dialogo search & replace de VS2005, consulten las referencias que menciono arriba, así evitaran alguna frustraciones ;).

 |  Related posts

No comments yet. Be the first.

Leave a reply

Mexico