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 postsNo comments yet. Be the first.
Leave a reply


Suscribete por correo