我需要創建一個匹配2個字符的正則表達式:&
或|
。如何在C++中使用boost來創建正則表達式?
的代碼行是這樣的:
boost::regex EXPR("[0-9][0-9][A-Za-z]") ;
如果鍵入任何串,便見如果上面列出的字符被包含在其中。 怎麼可能做到這一點?
我需要創建一個匹配2個字符的正則表達式:&
或|
。如何在C++中使用boost來創建正則表達式?
的代碼行是這樣的:
boost::regex EXPR("[0-9][0-9][A-Za-z]") ;
如果鍵入任何串,便見如果上面列出的字符被包含在其中。 怎麼可能做到這一點?
我不會寫一個正則表達式來匹配字符&
或|
。
我會用std::string::find
- http://www.cplusplus.com/reference/string/string/find/
謝謝! 工作。 – user1056635
如果你正在尋找對於兩個字符中的任何一個,使用'find_first_of'。 – MSalters
@ MSalters:是的,當我查看'find'時,我認爲'char *'重載會這樣做,但現在我再看一遍'find_first_of' –
根據我的語法解釋: [0-9A-Za-z]*[|&][0-9A-Za-z|&]*
這應該工作:".*?\Q|\E.*"
。請注意,你需要加倍反引號,所以它是:
string yourCharacter("|"); // or "&"
string rex(".*?\\Q"+yourCharacter+"\\E.*");
這是一個在線工具來測試正則表達式(前,通過此正則表達式匹配後的所有字符):http://gskinner.com/RegExr/
Boost正則表達式默認爲Perl語法,它具有'\ Q ... \ E',但您不需要在類中轉義字符,這是您在此需要的(兩個可能的字符之一)。 – MSalters
Uuuuhm,對不起?我沒有明白。 –
如果字符串「asd」不匹配。 如果字符串是「aaa&sss」匹配。 如果字符串是「asss | sss」匹配。 如果字符串是「asss&sfs | ssf」匹配。 – user1056635
因此,用一些字母,後面跟着至少一個'&'或'|',後面跟着更多的字母或'&'或'|'? – MSalters