0

我正在为 nodejs 编写一个 C++ 模块以进行大量数据解析。我决定用 C++ 编写解析,因为它会更快。我的目标是做这样的事情:

preg_match_all("@(==[^=]+==)(.+?(?=[^=]==[^=]|$))@s", $source, $paragraphs);
$data = preg_replace("/\[\[(Файл|Картинка|File|Picture|Image|double image):(.*)/i", "", $source);

但是在 c++ 中。我做了一项研究,发现了 Boost 库,但我无法在 VisualStudio 上安装它。我的目标是在以下 c++ 代码中实现上面显示的正则表达式:

#include <node.h>

using namespace v8;

Handle<Value> Callback(const Arguments& args) {
HandleScope scope;

if (!args[1]->IsFunction()) {
    return ThrowException(Exception::TypeError(
        String::New("Second argument must be a callback function")));
}

Local<Function> callback = Local<Function>::Cast(args[1]);

Local<String> text = args[0]->ToString();

// do regexs and data parsing here

const unsigned argc = 2;
Local<Value> argv[argc] = {
    Local<Value>::New(Null()),
    //, JSON OUTPUT HERE
};

callback->Call(Context::GetCurrent()->Global(), argc, argv);

return Undefined();
}

void RegisterModule(Handle<Object> target) {
target->Set(String::NewSymbol("parse"), FunctionTemplate::New(Callback)->GetFunction());
}

NODE_MODULE(wikiparser, RegisterModule);

问题:

有什么建议我可以在 c++ 中使用这些函数,或者有什么简单的方法来实现我的目标吗?请注意,不会只有 1-2 个正则表达式 - 会有 10-15 个。

4

0 回答 0