【发布时间】:2014-12-03 18:13:12
【问题描述】:
我有以下用 C++11 编写的函数,它使用标准 regex 模块中的正则表达式。顾名思义,它确定给定字符串str 是否是一个以给定prefix 为前缀的数字。
bool isPrefixedNumber(const std::string &prefix, const std::string &str) {
std::regex re(prefix + "[[:digit:]]+"))
return std::regex_match(str, re);
}
问题是我希望 prefix 按字面意思理解,即我想要
isPrefixedNumber("t.st", "tXst123")
返回false。有没有一种方法可以构建这样的正则表达式,而无需手动转义prefix 中出现的所有特殊字符?换句话说,在将std::string 传递给std::regex 时如何防止对特殊字符的解释?
注意:上面的函数只是我的问题的一个简单说明。我需要防止在更大的正则表达式中解释字符串。我不需要另一种方法来重写没有正则表达式的函数。
【问题讨论】: