2011-11-20 97 views
0

我需要创建一个匹配2个字符的正则表达式:&|如何在C++中使用boost来创建正则表达式?

的代码行是这样的:

boost::regex EXPR("[0-9][0-9][A-Za-z]") ; 

如果键入任何串,便见如果上面列出的字符被包含在其中。 怎么可能做到这一点?

+1

Uuuuhm,对不起?我没有明白。 –

+0

如果字符串“asd”不匹配。 如果字符串是“aaa&sss”匹配。 如果字符串是“asss | sss”匹配。 如果字符串是“asss&sfs | ssf”匹配。 – user1056635

+0

因此,用一些字母,后面跟着至少一个'&'或'|',后面跟着更多的字母或'&'或'|'? – MSalters

回答

4

我不会写一个正则表达式来匹配字符&|

我会用std::string::find - http://www.cplusplus.com/reference/string/string/find/

+0

谢谢! 工作。 – user1056635

+1

如果你正在寻找对于两个字符中的任何一个,使用'find_first_of'。 – MSalters

+0

@ MSalters:是的,当我查看'find'时,我认为'char *'重载会这样做,但现在我再看一遍'find_first_of' –

1

根据我的语法解释: [0-9A-Za-z]*[|&][0-9A-Za-z|&]*

0

这应该工作:".*?\Q|\E.*"。请注意,你需要加倍反引号,所以它是:

string yourCharacter("|"); // or "&" 
string rex(".*?\\Q"+yourCharacter+"\\E.*"); 

这是一个在线工具来测试正则表达式(前,通过此正则表达式匹配后的所有字符):http://gskinner.com/RegExr/

+0

Boost正则表达式默认为Perl语法,它具有'\ Q ... \ E',但您不需要在类中转义字符,这是您在此需要的(两个可能的字符之一)。 – MSalters

相关问题