gpt4 book ai didi

c++ - 如何找到除使用正则表达式定义的句子之外的所有句子?

转载 作者:行者123 更新时间:2023-11-28 04:18:52 25 4
gpt4 key购买 nike

最重要的是,我需要找到一些 Python 代码中的所有注释并将它们剪掉,只留下代码本身。但我不能从相反的方向去做。也就是说,我找到了评论本身,但我找不到除评论之外的所有内容。

我试过用“?!”,组成了一个正则表达式,如“(.*)(?!#.*)”。但它并不像我预期的那样工作。就像我附加的代码中一样,我也尝试使用一个“else”,即写入不同的变量,但由于某种原因它甚至没有去那里

#include <iostream>
#include <fstream>
#include <string>
#include <regex>

int main()
{
std::string line;
std::string new_line;
std::string result;
std::string result_re;
std::string path;
std::smatch match;
std::regex re("(#.*)");
std::cout << "Enter the path\n";
std::cin >> path;
std::ifstream in(path);
if (in.is_open())
{
while (getline(in, line))
{
if (std::regex_search(line, match, re))
{
for (int i = 0; i < match.size(); i++)
result_re += match[i + 1];
result_re += "\n";
}
else
{
for (int i = 0; i < match.size(); i++)
result += match[i];
//result += "\n";
}
std::cout << line << std::endl;
}
}
in.close();


std::cout << result_re << std::endl;
std::cout << "End of program" << std::endl;
std::cout << result << std::endl;
system("pause");
return 0;
}

正如我上面所说的,我想要获得除评论之外的所有内容,而不是相反。我还需要搜索“文本”中定义的多行注释。但是在这个实现中,我什至无法想象该怎么做,因为现在它是逐行读取的,在这种情况下,在常规程序的帮助下,我不可能获得多行注释

非常感谢您的建议和帮助。

最佳答案

1.不要尝试逐行解析输入文件。取而代之的是吸收整个文本并让正则表达式替换所有注释,这样您的整个程序将如下所示:

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <regex>

using namespace std; // for brevity

int main() {

cout << "Enter the path: ";

string filename;
getline(cin, filename);

string pprg{ istream_iterator<char>(ifstream{filename, ifstream::in} >> noskipws),
istream_iterator<char>{} };

pprg = regex_replace(pprg, regex{"#.*"}, "");
cout << pprg << endl;
}
  1. 处理多行 Python 文字 """""",使用 C++ 正则表达式很难做到(与上面的示例不同):几乎没有相互排斥的要求(恕我直言):
    • regex 应该是 POSIX 的扩展,但是
    • POSIX 正则表达式不支持空正则表达式匹配,但是
    • 为了制作一个 RE 来匹配一个否定的字符序列,需要一个否定的先行断言,这将是一个空匹配:(

因此这意味着,您需要考虑并提出一些编程逻辑来删除多行 Python 文本文字

关于c++ - 如何找到除使用正则表达式定义的句子之外的所有句子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55923919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com