有没有办法从 C++ 正则表达式中提取搜索? (不是关于正则表达式的问题,而是#include <regex>)

问题描述 投票:0回答:1

给定一个 C++ std 正则表达式,有没有办法弄清楚该正则表达式会搜索什么?取出构造时放入的字符串?

我已经看到了https://en.cppreference.com/w/cpp/regex/basic_regex,这里没有列出任何有用的内容。我唯一能做的就是生成每个可能的字符串并查看匹配的内容,但这似乎是一个疯狂的解决方案。无论我搜索文本多长时间,sizeof(regex) 都是一个常量 32,所以一些滥用的内存操作是不可能的。我尝试过转换为字符串和 char *s,认为有关它的大多数其他细节可能会在编译时已知,并且看起来会在类型中进行处理。这感觉像是应该可行的事情。我不拥有大型代码库,所以做一些类似将正则表达式包装在一个类中的事情,该类可以隐式转换为正则表达式,但也将搜索单独存储为字符串是不可能的。

c++ c++11 std
1个回答
0
投票

没有。*

这里似乎对什么是“正则表达式”存在根本性的误解。正则表达式是表示模式的“有向图”。当您将其应用于字符串时,您所做的只是通过成功遍历图形来测试字符串是否与模式匹配。 人类喜欢便利。必须手动构建图表,或者必须使用专门的图表绘制程序来生成构建它的代码,这将是非常痛苦的。 因此,我们使用一个非常方便的文本字符串来表示该图,我们倾向于将其称为“正则表达式”,即使它只是正则表达式图的“文本表示”。正则表达式构造采用该字符串并构建实际的 DFA(或 NFA)图。此后,我们使用该图来匹配我们想要的任何字符串。

* 所以,是的,如果我们编写代码将构造的图分解回字符串,我们

可以

从图中获取文本正则表达式字符串,但没有人需要这样做!我们为什么要这么做?

© www.soinside.com 2019 - 2024. All rights reserved.