我想找到ErrorDocument 404 http://rafflehaven.net/404
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.*?)/?$ $1.html [L]
和[/
之间的数字(在这种情况下为]
)。
我写了这样的代码:
12345
但是,我收到此错误:float num;
string line = "A111[/12345]";
boost::regex e ("[/([0-9]{5})]");
boost::smatch match;
if (boost::regex_search(line, match, e))
{
std::string s1(match[1].first, match[1].second);
num = boost::lexical_cast<float>(s1); //convert to float
cout << num << endl;
}
答案 0 :(得分:1)
您需要双倍转义[
和]
正则表达式character classes中的特殊字符。正确的正则表达式声明将是
boost::regex e ("\\[/([0-9]{5})\\]");
这是必要的,因为C ++编译器还使用反斜杠来转义\n
之类的实体,而正则表达式引擎使用反斜杠来转义特殊字符,以便将它们视为文字。因此,反斜杠加倍。当你需要匹配文字反斜杠时,你将不得不使用其中的4个(即\\\\
)。
答案 1 :(得分:1)
使用以下内容(转义[
和]
,因为它们是正则表达式中的特殊字符,表示字符类):
\\[/([0-9]{5})\\]
^^ ^^