我不知道谁关闭了这个问题,但请实际阅读这个问题......这是一个合法的问题,我已经在网上进行了大量研究,但找不到任何方法在 C++ 中实现它。我只能假设关闭问题的人没有阅读它。(他们没有提供关闭问题的任何理由,所以如果您要再次关闭它,请解释原因。)
我正在编写一个 C++ 程序,它需要采用 XML Schema 文件中定义的正则表达式并使用它们来验证 XML 数据。问题是,C++ 似乎不直接支持 XML 模式使用的正则表达式风格。
例如,有几个特殊的字符类\i
,\c
默认情况下没有定义,而且 XML Schema 正则表达式语言支持称为“字符类减法”的东西,这在 C++ 中似乎不支持。
允许使用\i
和\c
特殊字符类非常简单,我可以在正则表达式中查找“\i”或“\c”并用它们的扩展版本替换它们,但是让字符类减法工作要多得多令人生畏的问题...
例如,这个在 XML 模式定义中有效的正则表达式会在 C++ 中引发异常,指出它具有不平衡的方括号。
#include <iostream>
#include <regex>
int main()
{
try
{
// Match any lowercase letter that is not a vowel
std::regex rx("[a-z-[aeiuo]]");
}
catch (const std::regex_error& ex)
{
std::cout << ex.what() << std::endl;
}
}
如何让 C++ 识别正则表达式中的字符类减法?或者更好的是,有没有办法直接在 C++ 中使用正则表达式的 XML Schema 风格?