我試圖在boost.python
代碼中使用C++中的python正則表達式包re
。下面是在我的C++應用的示例代碼片段:嵌入在C++中的boost python中的正則表達式
#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
。
會有人能夠提供一些見解,爲什麼?謝謝!
好問題。 Boost.Regex比Python的're'風格強大得多。 –
謝謝aleguna,該解決方案的工作!原因是我需要在嵌入式python函數中評估一些表達式,所以將該表達式傳遞給我的python函數並進行模式匹配和評估就更加方便了。 – user773494