(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의 답변(즉, ".matches newline"이 선택된 RegEx 모드에서 검색), 다음과 같이 변경하십시오:

찾기: ^(S[^\r\n]+)(\r?\n?)\{(.*?)\}
바꾸기:\1\2\{\2\}

정보:
이제 대괄호 앞의 줄이 대문자 S로 시작하는지 확인합니다.
또한 줄 끝을 찾아 교체합니다(혼합된 줄 끝으로 끝나지 않도록).
\1그리고 \2바꾸기 표현식에서는 찾기 표현식의 괄호 그룹을 참조합니다.

관련 정보