【发布时间】:2018-05-06 15:24:15
【问题描述】:
我正在尝试编写一个正则表达式,它可以识别用户输入字符串中的空格,引号之间的空格除外 ("...")。例如,如果用户输入
#load "my folder/my files/ program.prog" ;
我希望我的正则表达式替换将其转换为
#load "my folder/my files/ program.prog" ;
到目前为止,我已经实现了以下内容(您可以运行它here)。
#include <iostream>
#include <string>
#include <regex>
int main(){
// Variables for user input
std::string input_line;
std::string program;
// User prompt
std::cout << ">>> ";
std::getline(std::cin, input_line);
// Remove leading/trailing whitespaces
input_line = std::regex_replace(input_line, std::regex("^ +| +$|( ) +"), "$1");
// Check result
std::cout << input_line << std::endl;
return 0;
}
但这也会删除引号之间的空格。有什么办法可以使用正则表达式来忽略引号之间的空格?
【问题讨论】:
-
你的问题很清楚,但是代码似乎没有很多共同点。请将您的问题分解为更小的问题,并提供演示它们的代码
-
有一种关于正则表达式的说法,类似于:“我有一个问题。我用正则表达式解决了它。现在我有 两个 问题”。正则表达式可以非常强大,但在许多情况下它完全是多余的,更不用说它们也非常复杂。修剪空间是其他更简单的解决方案可能就足够的一种情况。在您的情况下,一个带有布尔标志的“内部字符串”的简单复制循环应该绰绰有余。
-
听起来你正在寻找修剪...stackoverflow.com/questions/216823/…
-
@WiktorStribiżew 完成