2012-05-09 13 views
2

regcmp()regex()の仕組みを理解しようとしています。私のコードは、パターン([A-Za-z][A-za-z0-9]{0,4})$0の終わりに$0は何を意味している。ここ12行目で

int main() 
{ 
    char *newcursor, *name; char *string; char ret0[9]; 

    name = regcmp("([A-Za-z][A-za-z0-9]{0,4})$0", (char *)0); 
    printf("name %s\n",&(*name)); 
    newcursor = regex(name, "filter:attrsonly:attrs", ret0); 
    printf("newcursor %s and ret0 %s\n",newcursor,ret0); 
    return 0; 
} 

のですか?

regcmp()regex()がLINUXではありませんように私はポートにLINUXでregexec()regcomp()機能をUNIXからLinuxへのコードをregex()regcmp()を交換しています。

パターンから$0を削除した場合、実行時にLINUXで期待される結果が得られます。regcomp()$0の意味は?

答えて

1

は私がman 7 regexを引用してみましょう:

 '$' (matching the null string at the end of a line), 

チャンスはUNIXプログラムは、基本的な正規表現使用していたされています

Obsolete ("basic") regular expressions differ in several respects. 
    [ ... ] 
    '$' is an ordinary character except at the end of the RE or(!) 
    the end of a parenthesized subexpression 
    [ ... ] 

編集:[OK]を、私はあまりにもregcmp、UNIX見上げているはずですが、私は思いましたあなたはすでにそれをしていたでしょう:

(...)$n   The value of the enclosed regular expression is to be 
        returned. The value will be stored in the (n+1)th 
        argument following the subject argument. At most, ten 
        enclosed regular expressions are allowed. The regex() 
        function makes its assignments unconditionally. 

場合は$0は、マッチの結果がどこに行くかを指定するだけなので、そのまま放置することができます。

+0

私は '$'(行の最後にヌル文字列にマッチする)を理解していますが、古くなった( "ベーシック")などについては分かりません。$ 0なしでLINUXで動作するなら、 ? – bhuvana

+0

更新された答えがそれをより良く説明することを願っています。それ以外の場合は、マニュアルページへのリンクをクリックしてください。 – mata

+0

本当にありがとう! – bhuvana

関連する問題