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:
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).
\1
und \2
verweisen Sie im Ersetzungsausdruck auf die Klammergruppen im Suchausdruck.