簡體   English   中英

boost C ++中的正則表達式嵌入在C ++中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM