0

私はただ混乱して、C++での正規表現の使用に慣れようとしています。ユーザーに次のように入力してもらいたいとしましょう:###-$$-###、#= 0〜9の任意の数値と$ = 0〜5の任意の数値にします。これは、これを達成するための私の考えです。

regex rx("[0-9][0-9][0-9]""\\-""[0-5][0-5]")

これは正確なコードではありませんが、ユーザーの入力が有効な数字の文字列であるかどうかを確認するための一般的な考え方です。ただし、0で始まる数字を許可しないとしましょう:099-55-999は受け入れられません。どうすればそのようなものをチェックして無効に出力できますか?ありがとう

4

3 に答える 3

1
std::tr1::regex rx("[0-9]{3}-[0-5]{2}-[0-9]{3}");

マネージC++ではなくC++でtr1正規表現を使用することについて話しているのですか?もしそうなら、それがこのことを説明しているところにここに行きなさい。

また、VS2010を使用している場合は、正規表現用のBoostライブラリはもう必要ないことを知っておく必要があります。

于 2011-12-02T21:55:16.023 に答える
1

これを試して:

#include <regex>
#include <iostream>
#include <string>

int main()
{
    std::tr1::regex rx("\\d{3}-[0-5]{2}-\\d{3}");
    std::string s;
    std::getline(std::cin,s);
    if(regex_match(s.begin(),s.end(),rx))
    {
        std::cout << "Matched!" << std::endl;
    }
}

説明については、@Timの回答を確認してください。数字のメタ文字のdoubleに注意してください。\

于 2011-12-02T21:56:04.933 に答える