Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 正则表达式将斜杠替换为反斜杠内#包括双引号_C++_Regex - Fatal编程技术网

C++ 正则表达式将斜杠替换为反斜杠内#包括双引号

C++ 正则表达式将斜杠替换为反斜杠内#包括双引号,c++,regex,C++,Regex,我想用反斜杠替换斜杠,包括这样的双引号 之前 #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 / S

我想用反斜杠替换斜杠,包括这样的双引号

之前

#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标记和comment标记中的斜杠

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


谢谢。

你的代码是C++,但是你还没有说过如何替换斜杠:这可以在IDE中,有脚本,或者其他工具。 下面是一个解决方案,它将在正则表达式模式下使用搜索和替换来运行Notepad++(已测试)

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

替换:
\

说明:

(?m)(?:^#include\s*"|\G)[^/"]*\K/
  • 将这些选项用于整个正则表达式
    (?m)
    • ^$&换行符处匹配
      m
  • 匹配下面的正则表达式
    (?:^#include\s*“|\G)
    • 匹配此备选方案(仅当此备选方案失败时才尝试下一个备选方案)
      ^#include\s*“
      • 在行首(字符串开头或换行符之后)断言位置(换行)
        ^
      • 匹配字符串“#include”(区分大小写)
        #include
      • 匹配一个“空白字符”(ASCII空格、制表符、换行符、回车符、垂直制表符、换行符)的单个字符
        \s*
        • 在零次和无限次之间,尽可能多次,根据需要回馈(贪婪)
          *
      • 按字面意思匹配字符“”“
    • 或者匹配此选项(如果此选项不匹配,则整个组将失败)
      \G
      • 在上一次匹配结束时断言位置(第一次尝试的字符串开始)
        \G
  • 匹配列表中不存在的任何单个字符“/”
    [^/“]*
    • 在零次和无限次之间,尽可能多次,根据需要回馈(贪婪)
      *
  • 使文本在整个正则表达式匹配中保持匹配
    \K
  • 按字面意思匹配字符“/”
    /

您为什么要这样做?好吧,
/
应该可以在Windows上运行。我知道这可以在Windows上运行,但我想清理我的源代码,我喜欢使用反斜杠而不是斜杠。谢谢:)这种“清理”使您的代码不可移植。所以我称之为肮脏。你已经试过什么了?在这里你甚至不需要正则表达式,“字符串以foo开头”可以很便宜地完成。对不起,我喜欢用反斜杠而不是斜杠。这是我的编码风格。您可以看到,在Windows中,Windows中的所有路径都使用反斜杠,例如cmd、explorer。我想用和Windows一样的。谢谢。:)@StdAfx“比如cmd、explorer”,这与在
#include
语句中出现反斜杠有很大区别,我绝对不建议使用它们。如果这是你的编码风格(或其他风格),那就是糟糕的风格。谢谢你的帮助。这是工作。@StdAfx非常欢迎您,很高兴听到它为您工作。:)