【发布时间】:2018-08-08 16:45:05
【问题描述】:
std::regex regex("*", std::regex_constants::icase);
这将引发异常。如果我有异常disabled,它将终止应用程序,这意味着我无法捕获它并且像往常一样不对其执行任何操作。
有没有办法防止无效的正则表达式在构造时抛出异常?或者某种std::regex::isvalid("*") 检查是否存在?
我在想也许我可以想出一个单独的正则表达式,在我尝试构造函数之前解析输入的正则表达式字符串,但我更喜欢替代方案。
【问题讨论】:
-
只是没有捕获异常并且什么都不做是否符合您的要求?
-
@Blondie 不。当异常被禁用时,你不能只捕获异常。你甚至不能抛出异常
-
你不能用正则表达式解析正则表达式。
-
你真的需要使用正则表达式吗?
-
在您禁用异常的那一刻,您不再使用标准 C++。在这种情况下,您可能应该指定您的编译器和体系结构。也许有一个特定于编译器的解决方案,但根据定义,不可能有一个标准的解决方案。