匹配整个字符串,不区分大小写

时间:2014-09-02 11:51:58

标签: c++ string stl string-matching

我正在寻找一个可用于匹配整个单词的函数,例如:

std::string str1 = "I'm using firefox browser";
std::string str2 = "The quick brown fox.";
std::string str3 = "The quick brown fox jumps over the lazy dog.";

只有str2str3匹配单词fox。因此,如果在单词之前或之后存在诸如句点(。)或逗号(,)之类的符号并且它应该匹配并且它也必须同时不区分大小写搜索并不重要。

我找到了很多方法来搜索不区分大小写的字符串,但我想知道匹配整个单词的内容。

1 个答案:

答案 0 :(得分:0)

我想推荐C ++ 11的std::regex。但是,它还没有使用g ++ 4.8。所以我建议更换boost::regex

#include<iostream>
#include<string>
#include<algorithm>
#include<boost/regex.hpp>

int main()
{
    std::vector <std::string> strs = {"I'm using firefox browser",
                                      "The quick brown fox.",
                                      "The quick brown Fox jumps over the lazy dog."};
    for( auto s : strs ) {
        std::cout << "\n s: " << s << '\n';
        if( boost::regex_search( s, boost::regex("\\<fox\\>", boost::regex::icase))) {
            std::cout << "\n Match: " << s << '\n';
        }
    }
    return 0;
}

/*
    Local Variables:
    compile-command: "g++ --std=c++11 test.cc -lboost_regex -o ./test.exe && ./test.exe"
    End:
 */

输出结果为:

 s: I'm using firefox browser

 s: The quick brown fox.

 Match: the quick brown fox.

 s: The quick brown Fox jumps over the lazy dog.

 Match: the quick brown fox jumps over the lazy dog.