Notepad ++如何替换某些行之间的所有内容

时间:2013-07-24 18:27:33

标签: 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 = {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 = {

}

m_ClearCondition = {
m_eMobID = {50},
m_iMobKillCount = {1}
}

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

2 个答案:

答案 0 :(得分:1)

描述

您的帖子中的示例文字有几个不清楚的地方。但是这个表达式假定:

  • 每个m_clearcondition值都没有嵌套括号,超过一级深度。
  • 将找到每个密钥名称m_clearcondition并将其放入捕获组1
  • 关闭括号将被捕获到第2组

正则表达式:

^(\s+m_ClearCondition\s*=\s*\{)(?:\{[^}]*\}|[^}])*(\})

替换为:

$1\n    m_eMobID = {50},\n    m_iMobKillCount = {1}\n  $2

实施例

正则表达式的现场演示:http://regexr.com?35n0l

enter image description here

在这个例子中我使用的是Notepad ++ 6.4.2。在记事本版本5及更低版本中使用正则表达式的已知问题。

答案 1 :(得分:0)

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

\{\s*\}$

替换为:

{\nwhatever you want\n}\n

正则表达式匹配说明:

  • {}是保留的,因此转义它们将匹配实际的大括号字符
  • \ s当然会匹配所有空格(包括新行和标签)
  • $将是该行的结尾;这只是帮助比赛
  • 替换中的
  • \ n会在有意义的地方插入新行;这些是可选的。