我开始学习正则表达式,我用c ++编写代码
我的任务是:实现一个用function getByPermalinks (permalinks, callback) {
var template = 'select video_digests.*, permalinks.redirect' +
'FROM video_digests ' +
'RIGHT JOIN permalinks on permalinks.internal_id = video_digests.media_key WHERE permalinks.permalink in (?)';
db.query(
template,
[permalinks],
onGotVideos.bind(exports, callback)
);
字符替换给定字符串中每个数字的函数。
对于我的示例,'@'
字符串= input
。
我知道我需要使用"12 points"
来匹配数字。我试着用这个:\d
但它不起作用:std::regex_replace(input,std::regex("\d"),"@");
仍然是output
;
然后我搜索了互联网,结果是:
"12 points"
std::regex_replace(input,std::regex("\\d"),"@");
为output
。
任何人都可以帮我理解"@@ points"
是什么吗?
答案 0 :(得分:0)
在C ++应用程序中使用“\ d”时,\是C ++中的转义字符。因此它不会将以下d视为d。
然后正则表达式获取一个字符串,其中没有\ d,但很可能是一个空字符串(因为据我所知,\ d不会在C ++中评估任何内容)。
当你使用“\ d”时,你正在逃避。所以C ++按照你的意图将字符串读作“\ d”。
当您使用转义字符时,您希望输出引号的示例。 “\”“会输出一个双引号。
答案 1 :(得分:0)
\d
表示十进制,但是,在正则表达式中,\
是一个特殊字符,需要自行转义,因此在\\d
中你逃脱了\
将其标记为常规字符而非其特殊含义。