我正在爲了速度和內存管理的原因將PHP程序轉換爲C++。因爲PHP uses Perl-Compatible syntax,我去了增強庫是also uses the Perl syntaxBoost正則表達式不會編譯
使用Visual Studio Express 2013,我能夠使用我的7個表達式中的6個。在一個給我適合低於
^([\w]+= {\s*(?:[a-f0-9]{2}\s+)*})\s*
用於代碼如下:
MASKSUBSYS= { 00 af 01 02 }
我得到以下運行:
#include <string>
#include <boost/regex.hpp>
std::string regexError = R"~(^([\w]+= {\s*(?:[a-f0-9]{2}\s+)*})\s*)~";
boost::regex e(regexError);
這種表達這樣一個Regex101 Example字符串匹配致電時請特別注意boost::regex e(regexError);
RegexTest.exe中的0x7515C41F處未處理的異常:Microsoft C++異常:內存位置0x002DED5C處的boost :: exception_detail :: clone_impl>。
它看起來像是沒有問題,因爲你可以看到從原始字符串讀取到內存中的黑色斜線轉義。
就像我說的,只有7個表達式1不會直接編譯出來的PHP。我猜這與正則表達式的基本原理有關,但我對正則表達式不夠熟悉。這甚至不是迄今爲止最複雜的表達!有任何想法嗎?
我不知道,如果'[\ w] +'真的是你需要什麼'[]'應該是一組字符。我會在那裏簡單地使用'\ w +'。另外我認爲你需要逃避你的''和'}'。類似於:'R'〜(^(\ w + = \ {\ s *(?:[a-f0-9] {2} \ s +)* \})\ s *)〜「' – Galik 2014-10-29 13:51:09
你是對的。你應該回答這個問題! – Kenneth 2014-10-29 16:13:38