(Notepad++) 括弧内のテキストを削除しますが、括弧全体は削除しません

(Notepad++) 括弧内のテキストを削除しますが、括弧全体は削除しません

そこで投稿しました先ほどの質問ユーザー Dmytro Dzyubak から回答をもらいました。すべてうまくいきましたが、今はもっと速く動作するようにしています。詳細は以下をご覧ください。

前に:

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

ご覧のとおり、括弧がたくさんあります。括弧内のテキストだけを削除することは可能ですか?

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 はそのまま残しますか?

どのように表示されるかの例を以下に示します。

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

答え1

  • Ctrl+H
  • 検索対象:\b(?:SkinMesh|SoundEvents)\s+\{\K.+?(?=\})
  • と置換する:\n
  • チェック大文字と小文字を一致させる
  • チェック ラップアラウンド
  • 正規表現をチェック
  • チェック. matches newline
  • Replace all

説明:

\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.

交換:

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

与えられた例の結果:

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

画面キャプチャ:

ここに画像の説明を入力してください

答え2

この答えで RegEx Golf に勝つことはできませんが、有効です。

ガイドラインを使用してDmytro Dzyubak の回答(つまり、「. 改行に一致」をチェックした状態で RegEx モードで検索する場合)、次の変更を加えます。

検索:^(S[^\r\n]+)(\r?\n?)\{(.*?)\}
置換:\1\2\{\2\}

情報:
これで、かっこの前の行が大文字の S で始まることが保証されます。
また、行末もキャッチして置換します (行末が混在しないようにするため)。Replace式の
\1および\2は、Find 式のかっこグループを参照します。

関連情報