2017-04-27 3 views
0

こんにちは私は" ab_dc-05:d5ef6:aef_ "のように見える文字列を持っています。私は、他の文字列がこのように見えるかどうかを確認したいのです(最初は0〜xスペース、最後は0〜xスペース、英数字値と " - "、 "_"のみです)。私はところで、私はregex.hライブラリを見つけたが、私はWindows上でC99を使用する必要がありますので、私はおそらく1つを含めることはできません?このために使用する必要があります。C文字列がテンプレートに似ているかチェックしてください

はあなた

+0

あなたは[strcmp](http://ideone.com/x3MvMw)のようなものを意味しますか? – Michi

+0

@Michiこれは不可能ではないにしても多分複雑すぎるでしょう。 'strchr()'/'strpbrk()'はより密接に一致することができますが、いくつかのパーサを独自に追加する必要があります。 –

+0

なぜライブラリ関数を使用する必要がありますか?アレイの内容をチェックする単純なループで十分です。 – Lundin

答えて

2

ありがとうございました。ここのようなものが、私はそれを行うだろうかですこの作業をする必要があり、それはおそらくREを使用するよりも簡単です:

bool matchPattern(const char *s) 
{ 
    // Zero or more spaces at the start. 
    while(*s == ' ') 
    ++s; 
    const char * const os = s; 
    while(isalnum((unsigned int) *s) || *s == ':' || *s == '-' || *s == '_') 
    ++s; 
    // If middle part was empty, fail. 
    if(s == os) 
    return false; 
    // Zero or more spaces at the end. 
    while(*s == ' ') 
    ++s; 
    // The string must end here, or we fail. 
    return *s == '\0'; 
} 

上記テストされていませんが、少なくともインスピレーションとして十分です

を。
+0

いいえ... 2つの関数を使うことだけが必要なので、正規表現を使う方がずっと簡単です。しかし、それらの使い方を知っておく必要があります。そしてregexpライブラリは、一致したフィールドも_extract_することができます.... –

関連する問題