2

So I have a code like this

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

There are like a hundred of those, all different. How do I replace everything in between the curly brackets.

m_ClearCondition = {

}

to

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

I really hope someone could answer my question, I would be really grateful.

4

2 回答 2

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

在此处输入图像描述

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

于 2013-07-24T20:14:20.047 回答
0

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

\{\s*\}$

用。。。来代替:

{\nwhatever you want\n}\n

正则表达式匹配说明:

  • {} 是保留的,因此转义它们将匹配实际的大括号字符
  • \s 当然会匹配所有空格(包括新行和制表符)
  • $ 将是行尾;这只是有助于比赛
  • 替换中的 \n 会在有意义的地方插入新行;这些是可选的。
于 2013-07-24T18:40:30.177 回答