Visual Studio 2010: Find and Replace con Expresiones Regulares

Esto lo tienen versiones anteriores al Visual 2010, pero uso la referencia del 2010, así que aclaro por si las moscas.

Supongamos que tenemos una clase de test que abre un conjunto de archivos, y que tiene un montón de paths relativos hardcodeados de esta forma:

class FactoryImage{

   public static IEnumerable ImageTestCases{

      get{
         //9 bits, Signed, Monochrome1
         yield return new TestCaseData(new ImageParameters {
            FileName = ".\\ImagesTest\\DavidClunie\\MONOCHROME1\\Signed\\9SignedMonochrome1_512x512_LE.pix", //Rawdata, example image
            FileNameWhite = ".\\ImagesTest\\DavidClunie\\MONOCHROME1\\Signed\\9SignedMonochrome1_512x512_LEWhiteImage.pix", //Rawdata, white example image
            //Otros atributos...
         });

         //9 bits, Unsigned, Monochrome1
         yield return new TestCaseData(new ImageParameters{
            FileName = ".\\ImagesTest\\DavidClunie\\MONOCHROME1\\Unsigned\\9UnsignedMonochrome1_512x512_LE.pix", //Rawdata, example image
            FileNameWhite = ".\\ImagesTest\\DavidClunie\\MONOCHROME1\\Unsigned\\9UnsignedMonochrome1_512x512_LEWhiteImage.pix", //Rawdata, white example image
            //Otros atributos...
         });

         //Muchas más sentencias yield...
     }
   }
}

Ahora supongamos que para ser más prolijos decidimos expresar los strings hardcodeados usando verbatim, o sea sin secuencias de escape, todo "literal". O sea, queremos hacer un reemplazo de este estilo:

//Tenemos esto:
FileName = ".\\ImagesTest\\DavidClunie\\MONOCHROME1\\Signed\\9SignedMonochrome1_512x512_LE.pix",
//Y queremos convertirlo a esto:
FileName = @".\ImagesTest\DavidClunie\MONOCHROME1\Signed\9SignedMonochrome1_512x512_LE.pix",

Pero como tenemos muchas líneas así, cambiarlo a mano es muy engorroso. En un caso como este lo ideal es hacer un Find and Replace con Expresiones Regulares. Hay una referencia de la sintaxis que usa el Visual Studio acá. Luego de mirar un poco esa referencia, el reemplazo sale con estos patrones (click en la imagen para ver mejor):

Claro que no escribí todo el patrón de búsqueda y el de reemplazo y lo hice de una; es más práctico ir probando el patrón a medida que lo vamos escribiendo, para ver si matchea. Una vez que logramos que el patrón de búsqueda matchee bien, empezamos a escribir el de reemplazo y lo vamos probando de la misma forma.

Comments

Popular posts from this blog

VB.NET: Raise base class events from a derived class

Apache Kafka - I - High level architecture and concepts

Upgrading Lodash from 3.x to 4.x