(Notepad++) Text zwischen Klammern löschen, aber nicht aus allen Klammern

(Notepad++) Text zwischen Klammern löschen, aber nicht aus allen Klammern

Also habe ich geposteteine Frage vorhinund bekam eine Antwort vom Benutzer Dmytro Dzyubak, alles hat funktioniert, aber jetzt versuche ich, es schneller zu machen. Weitere Details unten.

Vor:

SkinMesh
{
    skin = "Art/Models/Effects/enviro_effects/misc/blood_orb/BloodOrb.sm"
}

SoundEvents
{
    soundbank = "_Effects_misc_blood_orbs.bank"
    animation = "enter"
        0 = "Audio/Sound Effects/Misc/BloodOrb/Start_$(#).ogg@2 120 0 0.1 0.1 0 -1 0 1 1"
    animation = "exit"
        0 = "Audio/Sound Effects/Misc/BloodOrb/End_$(#)[email protected] 115 0 0 0 0 -1 0 1 1"
    animation = "idle"
        0 = "Audio/Sound Effects/Misc/BloodOrb/Orb_$(#)[email protected] 115 0 0 0 0 -1 0 10 4.5"
}

BoneGroups
{
    bone_group = "mid false mid jnt_orb_01 "
    bone_group = "cyl false mid cyl "
    bone_group = "explode false jnt_orb_01 up_explode "
    bone_group = "explodecyl false jnt_orb_01 cyl_explode1 "
    bone_group = "midparticle false mini_orb1 mini_orb_particleup_02 "
}

Wie Sie sehen, gibt es eine Reihe von Klammern. Ist es möglich, nur den darin enthaltenen Text zu löschen:

SkinMesh
{
    skin = "Art/Models/Effects/enviro_effects/misc/blood_orb/BloodOrb.sm"
}

Und

SoundEvents
{
    soundbank = "_Effects_misc_blood_orbs.bank"
    animation = "enter"
        0 = "Audio/Sound Effects/Misc/BloodOrb/Start_$(#).ogg@2 120 0 0.1 0.1 0 -1 0 1 1"
    animation = "exit"
        0 = "Audio/Sound Effects/Misc/BloodOrb/End_$(#)[email protected] 115 0 0 0 0 -1 0 1 1"
    animation = "idle"
        0 = "Audio/Sound Effects/Misc/BloodOrb/Orb_$(#)[email protected] 115 0 0 0 0 -1 0 10 4.5"
}

und BoneGroups unberührt lassen?

Hier ist ein Beispiel, wie es aussehen sollte:

SkinMesh
{
}

SoundEvents
{
}

BoneGroups
{
    bone_group = "mid false mid jnt_orb_01 "
    bone_group = "cyl false mid cyl "
    bone_group = "explode false jnt_orb_01 up_explode "
    bone_group = "explodecyl false jnt_orb_01 cyl_explode1 "
    bone_group = "midparticle false mini_orb1 mini_orb_particleup_02 "
}

Antwort1

  • Ctrl+H
  • Finde was:\b(?:SkinMesh|SoundEvents)\s+\{\K.+?(?=\})
  • Ersetzen mit:\n
  • check Groß-/Kleinschreibung beachten
  • check Umwickeln
  • check Regulärer Ausdruck
  • ÜBERPRÜFEN. matches newline
  • Replace all

Erläuterung:

\b                  # word boundary
(?:                 # start non capture group
    SkinMesh        # literally "SkinMesh"
  |                 # OR
    SoundEvents     # literally "SoundEvents"
)                   # end group
\s+                 # 1 or more any spaces (including linebreak)
\{                  # openning curly bracket
\K                  # forget all we have seen until this position
.+?                 # 1 or more any characters including linebreak
(?=\})              # positive lookahead, make sure we have a closing curly bracket after.

Ersatz:

\n      # linefeed, you may use \r\n

Ergebnis für gegebenes Beispiel:

SkinMesh
{
}

SoundEvents
{
}

BoneGroups
{
    bone_group = "mid false mid jnt_orb_01 "
    bone_group = "cyl false mid cyl "
    bone_group = "explode false jnt_orb_01 up_explode "
    bone_group = "explodecyl false jnt_orb_01 cyl_explode1 "
    bone_group = "midparticle false mini_orb1 mini_orb_particleup_02 "
}

Bildschirmaufnahme:

Bildbeschreibung hier eingeben

Antwort2

Ich werde mit dieser Antwort kein RegEx-Golf gewinnen, aber sie funktioniert.

Mithilfe der Richtlinien inDmytro Dzyubaks Antwort(d. h. suchen Sie im RegEx-Modus mit aktiviertem „. stimmt mit Zeilenumbruch überein“), nehmen Sie die folgenden Änderungen vor:

^(S[^\r\n]+)(\r?\n?)\{(.*?)\}
Ersatz finden :\1\2\{\2\}

Info:
Es stellt jetzt sicher, dass die Zeile vor der Klammer mit einem großen S beginnt.
Es fängt auch das Zeilenende ab und ersetzt es (damit Sie nicht mit gemischten Zeilenenden enden).
\1und \2verweisen Sie im Ersetzungsausdruck auf die Klammergruppen im Suchausdruck.

verwandte Informationen