[英]Regular expressions in boost python embedded in C++
我試圖用Python的正則表達式包re
從C ++中,內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
字符串hello3
的數字。 這段確切的代碼行在Python中有效,但在嵌入式python中, rmatch
始終為None
。
有人能夠提供一些有關原因的見解嗎? 謝謝!
你需要用\\\\d
替換\\d
\\\\d
。
PS你為什么不用boost.regex?
我認為你需要擺脫反斜杠:
" rmatch = re.search(r'\\d',r'hello3')\n"
記住它首先由C ++編譯器處理。 當Python掌握它時,它會看到\\d
一個換行而不是\\\\d
和\\n
。 如果您沒有使用Python的原始字符串( r''
),則必須將其寫為:
" rmatch = re.search('\\\\d','hello3')\\n"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.