2014-11-14 81 views
-1

「^ [a-z] + $」vs「[^ a-z] + $」之間的區別是什麼?正則表達式克拉位置差

「^ [A-Z] + $」=這一個是什麼,用字母

「[^ A-Z] + $」 開頭=這一個是什麼,但信

誰能證實?如果我錯了,能有人給我「任何以字母開頭」和「什麼,但字母」正則表達式

編輯:

如何有關,如果我看到的組合正則表達式字母和數字,這是無效的。

[^一個-Z0-9] + $

或是

它[^ AZ] + [^ 0-9] + $

由於

+1

是的,正確的:)「小寫字母」 – 2014-11-14 20:19:14

+0

不要忘了「$」錨定終點。第一個不只是從小寫字母開始,它只是從頭到尾的小寫字母。第二個可以以任何字母開頭,但不能以字母開頭,但必須以至少一個非小寫字母結尾。 – jas 2014-11-14 20:26:29

回答

1

方括號在正則表達式中指定一個字符類 - 它匹配括號中的所有字符。

在字符類外,^匹配字符串的開始或行的開始(取決於是否使用m修飾符)。所以正則表達式^[a-z]+$與完全是字母的行匹配。如果您刪除$(與字符串/行的末尾匹配),您將得到一個匹配任何以字母開頭的正則表達式;在這種情況下,你也不需要+量詞(任何以1或更多字母開頭的東西也以1個字母開頭)。

在字符類的開始處,^反轉該類。與括號中的所有字符不匹配,它會匹配括號中的所有而不是的字符。所以[^a-z]+$匹配以非字母結尾的任何內容,因爲$匹配字符串/行的結尾。如上所述,您不需要+,因爲任何以一個或多個非字母結尾的內容都以一個非字母結尾。匹配時一切是一個正則表達式一個非字母是:

^[^a-z]+$ 

匹配時,有該行的任何非字母將是一個正則表達式:

[^a-z] 

即沒有^$主播。

+0

@MladenUzelac鏈接不起作用,你的意思是這一個http://www.regexr.com/。 – 2014-11-14 20:23:23

+0

http://www.regexper.com/這是完全正確的鏈接 – 2014-11-14 20:59:34

1

「^ [A-ZA-Z] + $」=這一個是什麼,用字母開頭

「[^ A-ZA-Z] + $」=這一個是什麼,但信

如果你想包括上限和字母用於可視化正則表達式

工具: Visualizing regular expressions