boost C ++中的正则表达式嵌入在C ++中

时间:2012-11-16 15:42:57

标签: c++ regex boost-python

我正在尝试在re代码中使用C ++中的python的正则表达式包boost.python。以下是我的C ++应用程序中的示例代码段:

#include <boost/python.hpp>


Py_Initialize();
object main = import("__main__");
object main_namespace = main.attr("__dict__");

object ignored = exec(
        "import re\n"
        "def run():\n"
        "    rmatch = re.search(r'\d',r'hello3')\n"
        "    print rmatch\n"
        "\n"
        "print 'main module loaded'\n", main_namespace); 

object run_func = main.attr("run");
run_func(); 

Py_Finalize(); 

正则表达式应该只是选取字符串hello3中的数字。这段确切的代码行在Python中有效,但在嵌入式python中,rmatch总是None

是否有人能够提供一些有关原因的见解?谢谢!

2 个答案:

答案 0 :(得分:2)

您需要将\d替换为\\d

PS 你为什么不用boost.regex ??

答案 1 :(得分:1)

我认为你需要摆脱反斜杠:

"    rmatch = re.search(r'\\d',r'hello3')\n"

请记住它首先由C ++编译器处理。当Python掌握它时,它会看到\d而不是\\d\n的换行符。如果您没有使用Python的原始字符串(r''),则必须将其写为:

"    rmatch = re.search('\\\\d','hello3')\\n"