Regex 记事本++;如何替换某些行之间的所有内容

Regex 记事本++;如何替换某些行之间的所有内容,regex,replace,find,notepad++,Regex,Replace,Find,Notepad++,所以我有一个这样的代码 TitleManager:AddSubTitleMissionInfo_LUA({ m_iID = 10, m_wstrDescription = "Professional Killer", m_eClearType = TITLE_MISSION_CLEAR_TYPE.TMCT_MOB_KILL_COUNT, m_bAutomaticDescription = True, m_ClearCondition = { m_eMobID = {6

所以我有一个这样的代码

TitleManager:AddSubTitleMissionInfo_LUA({
  m_iID = 10,
  m_wstrDescription = "Professional Killer",
  m_eClearType = TITLE_MISSION_CLEAR_TYPE.TMCT_MOB_KILL_COUNT,
  m_bAutomaticDescription = True,
  m_ClearCondition = {
    m_eMobID = {68},
    m_iMobKillCount = {1}
  }
})
TitleManager:AddSubTitleMissionInfo_LUA({
  m_iID = 20,
  m_wstrDescription = "Sneaky Assassin",
  m_eClearType = TITLE_MISSION_CLEAR_TYPE.TMCT_MOB_KILL_COUNT,
  m_bAutomaticDescription = True,
  m_ClearCondition = {
    m_eMobID = {69},
    m_iMobKillCount = {1}
  }
})
TitleManager:AddSubTitleMissionInfo_LUA({
  m_iID = 20,
  m_wstrDescription = "Merciless Thug",
  m_eClearType = TITLE_MISSION_CLEAR_TYPE.TMCT_MOB_KILL_COUNT,
  m_bAutomaticDescription = True,
  m_ClearCondition = {
    m_eMobID = {70,71},
    m_iMobKillCount = {1,1}
  }
})
大概有一百种,都不一样。 如何替换花括号之间的所有内容

m_ClearCondition = {

}


我真的希望有人能回答我的问题,我将非常感激。

Regex是你的朋友。Ctrl-H(查找/替换)并启用正则表达式(对话框左下角)

替换为:

{\nwhatever you want\n}\n
正则表达式匹配说明:

  • {}是保留的,因此转义它们将匹配实际的大括号字符
  • \当然,s将匹配所有空格(包括新行和制表符)
  • $将是该行的结尾;这对比赛很有帮助
  • \n在替换中插入有意义的新行;这些是可选的
说明 关于你的帖子中的示例文本,有一些不清楚的地方。但这个表达式假设:

  • 每个
    m_clearcondition
    值的嵌套括号深度都不会超过一级
  • 将找到每个密钥名m_clearcondition并将其放入捕获组1
  • 闭合支架将被捕获到第2组中
正则表达式:

^(\s+m_ClearCondition\s*=\s*\{)(?:\{[^}]*\}|[^}])*(\})
替换为:$1\n m_eMobID={50},\n m_iMobKillCount={1}\n$2

$1\n m_eMobID = {50},\n m_iMobKillCount = {1}\n $2 例子: regex的现场演示:


在本例中,我使用的是记事本++6.4.2。在记事本版本5和更低版本中使用正则表达式存在已知问题。

我尝试了这个方法,但它只替换了空白的部分,如何将代码写在花括号内的部分包含在内。@user2201461:您需要准确指定这些花括号之间可能遇到的内容。谢谢,这正是我需要的。
^(\s+m_ClearCondition\s*=\s*\{)(?:\{[^}]*\}|[^}])*(\})
$1\n m_eMobID = {50},\n m_iMobKillCount = {1}\n $2