Как в Notepad++/Sublime Text 3 сделать весь текст строчными буквами с помощью регулярного выражения, но только если в строке встречается определенная фраза?

Как в Notepad++/Sublime Text 3 сделать весь текст строчными буквами с помощью регулярного выражения, но только если в строке встречается определенная фраза?

Допустим, у меня есть такой текст:

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

и я хочупреобразовать все буквы в строчные, но только если строка содержит слово«модели».

В результате получается следующее:

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

Я знаю, что могу это сделать: (\w)-> \L$1но это заменит все символы.

Я попробовал сделать это так:

models (\w)-> models \L$1но любые подобные попытки терпят неудачу.

решение1

Вы можете использовать:

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

Эксплантация:

  • ^- соответствует началу строки
  • .*?- что угодно, нежадное, после и перед словом, которое вы ищете
  • [Mm]odels- без учета регистра models. Оберните его в \bs, чтобы гарантировать, что eg someothermodelsне будет соответствовать.
  • $- конец линии

Затем замените на:

\L$0

что в движке регулярных выражений Boost, используемом Notepad++/Sublime Text 3, означает, что \Lвсе последующее будет переведено в нижний регистр и $0будет полным совпадением, то есть все совпадающие строки.

Связанный контент