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