如何在C ++中使用Regex匹配给定句子中由多个空格分隔的两个单词?

时间:2017-09-07 19:47:03

标签: c++ regex

我有句子"这是我生命中最好的一天"和"这是最好的      我的生活" 最好的一天"。我希望匹配" best"其次是" day"使用正则表达式,即句子应包含表达式"最佳日期"。注意在" best"之间可以有任意数量的空格。和"日"但是,应该在最佳之后。

我写了这个正则表达式 - (best)(\\s+)(day)并在C ++中使用了regex_match,但它没有用。我对Regex不是很熟悉;有人可以指导我吗?

bool isValidBestDay(string str)
{
    string bestDay = "(best)(\\s+)(day)";
    regex bestDayMatch(suchThat, ECMAScript | icase);
    return regex_match(str, bestDayMatch);
}

我在C ++上遇到的问题是,如果我有一个字符串,那么最好的一天'它匹配,但如果我有类似"这个最好的一天"。 谢谢!

2 个答案:

答案 0 :(得分:1)

使用regex_search代替regex_matchsince

  

regex_search将成功匹配给定的任何子序列   序列,而std :: regex_match只会返回true   正则表达式匹配整个序列。

答案 1 :(得分:-2)

你正在寻找的正则表达式是

((best)\s*(day))

转到此网站http://regexr.com

Expression框中输入我给的正则表达式 并在Text框中放入以下示例,您将理解。

离。

This is the best day of my life

This is the best day of my life

This is the best not day of my life