正则表达式用#include双引号内的反斜杠替换斜杠

时间:2014-05-31 09:28:03

标签: c++ regex

我想用#include双引号内的反斜杠替换斜杠。

之前

#include "Monster.h"
#include "ItemManager.h"
#include "Skil/Server/Manager/Skillmanager.h"
#include "Quest/QuestEvent.h"
#include "AES/AES.h"
#include "Trigger/Timer.h"

// Timer Class
CTimer::CTimer()
{
    printf("Minute / Second");
    printf("\t%2d:%2d\n", tMinute, tSecond);
}

#include "Monster.h"
#include "ItemManager.h"
#include "Skil\Server\Manager\Skillmanager.h"
#include "Quest\QuestEvent.h"
#include "AES\AES.h"
#include "Trigger\Timer.h"

// Timer Class
CTimer::CTimer()
{
    printf("Minute / Second");
    printf("\t%2d:%2d\n", tMinute, tSecond);
}

我想仅在#include标记中替换斜杠,而不是在printf标记和注释标记中替换斜杠。

我用来搜索什么是正则表达式?

谢谢你。

1 个答案:

答案 0 :(得分:2)

您的代码是使用C ++编写的,但您还没有说明如何替换斜杠:这可以在IDE中,使用脚本或其他工具。

这是一个解决方案,可以在正则表达式模式下使用搜索和替换Notepad ++(已测试)。

搜索:(?m)(?:^#include\s*"|\G)[^/"]*\K/

替换:\

<强>解释

(?m)(?:^#include\s*"|\G)[^/"]*\K/
  • 将这些选项用于整个正则表达式(?m)
    • ^ $&amp;匹配换行符m
  • 匹配(?:^#include\s*"|\G)下面的正则表达式
    • 匹配此备选方案(仅在此方案失败时尝试下一个备选方案)^#include\s*"
      • 在行的开头(字符串的开头或换行符后)断言位置(换行符)^
      • 字面匹配字符串“#include”(区分大小写)#include
      • 匹配单个字符“空格字符”(ASCII空格,制表符,换行符,回车符,垂直制表符,换页符)\s*
        • 在零和无限次之间,尽可能多次,根据需要回馈(贪婪)*
      • 匹配字符“&#34;”字面意思"
    • 或者匹配此替代方案(如果此组无法匹配则整个组都会失败)\G
      • 在上一场比赛结束时断言位置(第一次尝试的字符串的开头)\G
  • 匹配列表中未出现的任何单个字符“/&#34;”[^/"]*
    • 在零和无限次之间,尽可能多次,根据需要回馈(贪婪)*
  • 保持文本匹配到目前为止的整个正则表达式匹配\K
  • 字面匹配字符“/”/