2013-12-16 25 views
1

請問這個正則表達式的意思是:正則表達式「/ [^ C] /」

$rgx='/[^C]/'; 

通常這個標誌意味着沒有角色C
但它返回的所有字符串,如果有一個不管匹配C字符或不

這裏是我查了匹配的字符串:

$vec=array('nI like Java%4%','I love PHP','I enjoy C#','I enjoy being paid in $'); 
+3

這是正確的。唯一不匹配的字符串就是'C','CCCC'或'CCCCCCCCCCCCCCCCCCCCCCC'這樣的值。 – CompuChip

+0

是否有人知道除C#之外的所有字符的正則表達式。 – user3021621

+0

你不需要正則表達式。你可以使用子串匹配。或者你可以使用'/(C#)/'並且否定結果(即,如果正則表達式匹配,則它__具有C#)。 – CompuChip

回答

3

的正則表達式包含至少一個CHARAC所有字符串匹配這不是一個C。這意味着,它將匹配這些字符串

"CCCCCa" 
"CC C" 
"c" 

但它不會匹配任何這些字符串:

"C" 
"CCCCCC" 

爲了確保整個字符串不包含任何C,使用^[^C]*$。它將確保您從頭到尾與^$定位符(注意某些語言中多行字符串的行爲,在Ruby中您可能想用\A[^C]*\z代替)一致地匹配整個字符串。在字符串內部,它將確保所有字符與[^C]字符類匹配(即不是C)。例如,

+0

如何排除包含至少一個「C」字符的所有字符串? –

+0

請參閱我的問題的更新。 –

2

[^C]匹配「不是C」的任何字符,所以它匹配#"C#"中。

如果你想在正則表達式僅匹配,如果沒有C在字符串中的所有,使用

^[^C]*$ 

anchors確保整個字符串匹配,並且[^C]*只允許(任何數量)非C字符匹配。

+0

感謝大家。 – user3021621

0

正則表達式[^C]表示any character except: 'C'

enter image description here

正則表達式[^C]*表示

any character except: 'C' (0 or more times(matching the most amount possible)) 

enter image description here

+0

只是好奇:你用什麼來製作這些圖表? –

+1

@fearless_fool ---使用debuggex。嘗試一下 .. –