
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$1
aber 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 beachtetmodels
. Setzen Sie es in\b
s, um sicherzustellen, dass egsomeothermodels
nicht übereinstimmt.$
- Ende der Linie
Dann ersetzen durch:
\L$0
was in der von Notepad++/Sublime Text 3 verwendeten Boost-Regex-Engine bedeutet, dass \L
alles Folgende klein geschrieben wird und eine $0
vollständige Übereinstimmung besteht, also alle übereinstimmenden Zeilen.