2010-10-30 24 views
0

好的,所以^[A-Z]表示以大寫字母開頭。那麼^[A-Z]*是什麼意思?這是否意味着大寫字母不會出現零次或多次?因爲它包含輸出中不是大寫字母的空行,所以我真的很困惑。另外,你能解釋^[A-Z]*$嗎?對此正則表達式感到困惑

mugbear:~# clear 
mugbear:~# cat emptyspace 
line1 
line2 

line4 
line5 

line7 
mugbear:~# grep '^[A-Z]*' emptyspace            
line1 
line2 

line4 
line5 

line7 
mugbear:~# grep '^[A-Z]*$' emptyspace 


mugbear:~# 
+0

通常情況下,如果您要詢問其他完全不同的問題,最好在關閉電流後提出一個新問題。 – greg 2010-10-30 03:24:55

+0

Greg,我會這麼做的。 – Strawberry 2010-10-30 03:38:52

回答

2

一個空行或多次出現大寫字母。後面的表達式是 含糊不清,以 或更多出現的大寫字母開頭和結尾,也被稱爲「任何東西」。

更新:請參考Tanzelax的答案作爲應該被接受的答案。

+0

這是愚蠢的,我甚至寫出來,它甚至沒有正確處理我的大腦。謝謝。 – Strawberry 2010-10-30 03:03:11

+0

星期五晚上,錯誤肯定會發生;)請隨時接受正確的答案。 – greg 2010-10-30 03:11:32

+0

更新了我的回答,以回答您的其他問題。 – greg 2010-10-30 03:25:32

1

零次或多次出現次數可以包括零次出現次數。

因此,^[A-Z]*僅包括「新行」,即每一行。

$是行尾,所以^[A-Z]*$表示'新行,後面跟着大寫字母的任意數字(包括零),後面跟着'行結束',它只是空行(是'新行,零大寫字母,行尾「)。

+0

事實並非如此,'^ [A-Z] * $'將匹配任何內容,不僅包括換行符,大寫字母和EOL。 「AaA」以零個或多個大寫字母以及「aaa」開頭和結尾。 – greg 2010-10-30 03:07:48

+0

@greg,我建議你把你的理論付諸實踐。你的陳述是不正確的。 – tchrist 2010-10-30 04:13:32

+0

@tchrist謝謝。我評論的其實是完全不正確的。由於*應用於字符集(**零**或更多),所以會捕獲「空白」行。這個正則表達式將會捕獲所有大小寫內容。由於標記的「*」部分首先與空白匹配,因此我的示例沒有被匹配爲模式。 – greg 2010-10-30 15:02:54

1

如果你問什麼在表達式末尾添加了星號,它意味着匹配0次或更多次。在你提供的表達中,它意味着儘可能多地匹配大寫字母。

http://www.regular-expressions.info/也可能對您有所幫助。