2011-03-07 69 views
1

只要未跟隨數字或空格+數字,我就想匹配「開」,而不使用負向預覽(因爲據我所知,C不會不支持 - 如果我錯了,請糾正我)。不匹配數字或空格時匹配的詞+數字

謝謝!

+2

C? C沒有標準的正則表達式庫。 – kennytm 2011-03-07 17:41:06

+0

你有什麼意思? – 2011-03-07 17:45:41

+0

這個觀點(我懷疑)是,如果沒有一些正則表達式庫,那麼帶有正則表達式模式的答案可能沒有用處。從問題的措辭來看,這聽起來不像是你正在使用正則表達式庫。你在問一個正則表達式嗎? – 2011-03-07 18:00:22

回答

0

如果你想在C,但沒有正則表達式來寫一個匹配,那麼你可能想看看isspace()isdigit()isalpha()ctype.h中

0

要匹配,有一個字符串你它的條件?

編輯 - 沒有閱讀?很好

編輯 - 好吧,這裏亞去哥們

/on([^\d ]|[ ](\D|$)|$)/

測試用例:

use strict; use warnings; 

my @samps = (
' on', 
' on9', 
' on ', 
' on 5', 
' on 7', 
' on p', 
' on6 ', 
); 

for (@samps) { 
    if (/on([^\d ]|[ ](\D|$)|$)/) { 
     print "matched '$_'\n"; 
    } 
    else { 
     print "'$_' failed\n"; 
    }  
} 

輸出

matched ' on' 
' on9' failed 
matched ' on ' 
' on 5' failed 
matched ' on 7' 
matched ' on p' 
' on6 ' failed 
1

這工作:

#include <sys/types.h> 
#include <regex.h> 
regex_t re; 
/* regcomp(&re, "on([^ ]| [^[:digit:]])", REG_EXTENDED); */ // thanks sln :) 
regcomp(&re, "on ?[^ 0-9]", REG_EXTENDED); 
+0

不能空格匹配一個數字,所以如果尋找一個正匹配,on9會匹配時,它可能不應該。 – sln 2011-03-07 20:12:58