2010-05-07 70 views
16

^[a-zA-Z][^a-zA-Z]之間有區別嗎?正則表達式「^ [a-zA-Z]」或「[^ a-zA-Z]」

當我在C#檢查,

Regex.IsMatch("t", "^[a-zA-Z]") // Returns true (I think it's correct) 

Regex.IsMatch("t", "[^a-zA-Z]") // Returns false 

有很多使用[^a-zA-Z]字母表網站。我不確定哪一個是正確的答案。

+0

非常感謝你的答案。我現在可以清楚地看到。 – Win 2010-05-07 18:40:22

+9

很高興雨不見了! – tloflin 2010-05-07 18:42:28

+2

順便說一句,C#沒有正則表達式。 .NET框架。 – 2010-05-07 21:10:17

回答

55

是的,第一種意思是「匹配所有以字母開頭的字符串」,第二種意思是「匹配所有包含非字母的字符串」。脫字符(「^」)以兩種不同的方式使用,一種用於指示文本的開始,一種用於否定方括號內的字符匹配。

+1

+1兩全其美 - 簡明而正確。 – Dathan 2010-05-07 18:33:28

5

有差別。

^字符出現在[]之外時,與該行(或字符串)的開頭匹配。當^字符出現在[]的內部時,它會匹配沒有出現在[]內的任何字符。

9

^[a-zA-Z]意味着在一行

[^a-zA-Z]的開始任何AZ或AZ指並非AZ任何字符或AZ

3

^外的字符類的( 「[A-ZA-Z]」 )指出這是「開始」操作員。
^字符內部否定指定的類。

因此,「^ [a-zA-Z]」翻譯爲「以az或AZ開始的字符」,並且「[^ a-zA-Z]」翻譯爲「不是az或AZ」

這裏有一個快速參考:http://www.regular-expressions.info/reference.html