En Notepad++/Sublime Text 3, ¿cómo puedo poner todo el texto en minúsculas mediante expresiones regulares, pero solo si aparece una frase específica en la línea?

En Notepad++/Sublime Text 3, ¿cómo puedo poner todo el texto en minúsculas mediante expresiones regulares, pero solo si aparece una frase específica en la línea?

Digamos que tengo un texto como ese:

models/players/clonespac/CloneTorsoLieutenant
{
    q3map_nolightmap
    q3map_onlyvertexlighting
    {
        map models/players/clonespac/CloneTorsoLieutenant
        blendFunc GL_ONE GL_ZERO
        rgbGen lightingDiffuse
    }
    {
        map gfx/effects/clone
        blendFunc GL_DST_COLOR GL_SRC_COLOR
        tcGen environment
        blendFunc GL_SRC_ALPHA GL_ONE
        detail
        alphaGen lightingSpecular
    }
}

y quieroconvertir todas las letras a minúsculas, pero sólo si la línea contiene la palabra"modelos".

Resultando en esto:

models/players/clonespac/clonetorsolieutenant
{
    q3map_nolightmap
    q3map_onlyvertexlighting
    {
        map models/players/clonespac/clonetorsolieutenant
        blendFunc GL_ONE GL_ZERO
        rgbGen lightingDiffuse
    }
    {
        map gfx/effects/clone
        blendFunc GL_DST_COLOR GL_SRC_COLOR
        tcGen environment
        blendFunc GL_SRC_ALPHA GL_ONE
        detail
        alphaGen lightingSpecular
    }
}

Sé que puedo hacer esto: (\w)-> \L$1pero reemplaza todos los caracteres.

Intenté hacerlo así:

models (\w)-> models \L$1pero cualquier intento como ese está fallando.

Respuesta1

Puedes usar:

^.*?[Mm]odels.*?$

Explantación:

  • ^- inicio del partido de la línea
  • .*?- cualquier cosa, no codiciosa, después y antes de la palabra que estás buscando
  • [Mm]odels- no distingue entre mayúsculas y minúsculas models. Envuélvalo en \bs para asegurarse de que, por ejemplo, someothermodelsno coincida.
  • $- fin de la línea

Luego reemplácelo con:

\L$0

que en el motor Boost regex utilizado por Notepad++/Sublime Text 3 significa que \Lpondrá en minúsculas todo lo que sigue y $0coincide completamente, es decir, líneas coincidentes completas.

información relacionada