Wie kann ich in Notepad++/Sublime Text 3 den gesamten Text mithilfe regulärer Ausdrücke in Kleinbuchstaben umwandeln, aber nur, wenn in der Zeile eine bestimmte Phrase vorkommt?

Wie kann ich in Notepad++/Sublime Text 3 den gesamten Text mithilfe regulärer Ausdrücke in Kleinbuchstaben umwandeln, aber nur, wenn in der Zeile eine bestimmte Phrase vorkommt?

Angenommen, ich habe einen Text wie diesen:

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
    }
}

und ich willalle Buchstaben in Kleinbuchstaben umwandeln, aber nur, wenn die Zeile das Wort enthält"Modelle".

Das Ergebnis ist:

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
    }
}

Ich weiß, dass ich das tun kann: (\w)-> \L$1, aber es ersetzt jedes Zeichen.

Ich habe versucht, es so zu machen:

models (\w)-> models \L$1aber alle Versuche dieser Art schlagen fehl.

Antwort1

Sie können verwenden:

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

Erklärung:

  • ^- Zeilenanfang anpassen
  • .*?- alles, nicht gierig, nach und vor dem gesuchten Wort
  • [Mm]odels- Groß-/Kleinschreibung wird nicht beachtet models. Setzen Sie es in \bs, um sicherzustellen, dass eg someothermodelsnicht übereinstimmt.
  • $- Ende der Linie

Dann ersetzen durch:

\L$0

was in der von Notepad++/Sublime Text 3 verwendeten Boost-Regex-Engine bedeutet, dass \Lalles Folgende klein geschrieben wird und eine $0vollständige Übereinstimmung besteht, also alle übereinstimmenden Zeilen.

verwandte Informationen