c++ stringで文字列の全一致を探す方法

ちなみに私がいう全一致というのは、検索する文字列を”fish”とすると、一致するのが”fish”のみという意味合いで使っています。

例えば、stdのfind関数だと、”fisha”もfind関数に引っかかってしまいます。

全一致を判定する関数

regrexヘッダーに正規表現を利用して、文字列が正規表現に適合するかを判定するregex_search関数があるので、
この関数を使用することで、文字列の全一致を判定することができます。

しかし、regrexヘッダーはc++のversionよって使えないので、注意です。

regrex_searchの使い方

regrexというクラスに正規表現を割り当てることができ、それをregrex_searchの引数に埋め込めば、
正規表現でを使うことができます。

例えば、fishという文字が全一致しているかは以下のように書きます。

regex re("^" + str1 + "$" , regex_constants::icase);

2番目の引数は小文字制限を表しています。

単純に対象の文字列が”fish”と全一致しているか判定するには以下のように書きます。

string str1 = "fish";
regex re("^" + str1 + "$" , regex_constants::icase);
smatch m;

if(std::regex_search(str1, m, re)){
    // match
}
カテゴリー: c++タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です