そこで投稿しました先ほどの質問ユーザー 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 式のかっこグループを参照します。