3
我想串pcode
在符合下列項目:編譯/匹配POSIX正則表達式用C
u
接着是1或2位數phaseu
phasep
x
(被非字詞包圍)y
(被非字詞字符包圍)z
(由非文字字符包圍)
我試圖實現使用正則表達式POSIX函數(如下所示)一個正則表達式匹配,但有兩個問題:
- 編譯模式似乎沒有子模式(即compiled.n_sub == 0)。
- 該模式在字符串「u0」中找不到匹配項,它真的應該這樣做!
我有信心,正則表達式字符串本身正在工作,它在python和TextMate中工作 - 我的問題在於編譯等在C.任何幫助獲得這項工作將非常感激。
在此先感謝您的答案。
if(idata=tb_find(deftb,pdata)){
MESSAGE("Global variable!\n");
char pattern[80] = "((u[0-9]{1,2})|(phaseu)|(phasep)|[\\W]+([xyz])[\\W]+)";
MESSAGE("Pattern = \"%s\"\n",pattern);
regex_t compiled;
if(regcomp(&compiled, pattern, 0) == 0){
MESSAGE("Compiled regular expression \"%s\".\n", pattern);
}
int nsub = compiled.re_nsub;
MESSAGE("nsub = %d.\n",nsub);
regmatch_t matchptr[nsub];
int err;
if(err = regexec (&compiled, pcode, nsub, matchptr, 0)){
if(err == REG_NOMATCH){
MESSAGE("Regular expression did not match.\n");
}else if(err == REG_ESPACE){
MESSAGE("Ran out of memory.\n");
}
}
regfree(&compiled);
}
感謝威樂!這個技巧非常漂亮。 你能告訴我是否有OR(|)的等價物,還是我應該只編譯和匹配多個表達式? – 2009-06-23 12:06:29