Question: Okay, so `^[A-Z]` means beginning with a capital letter. So what does `^[A-Z]*` mean? Does it not mean zero or more occurrences of a capital letter? Because it is really confusing me since it is including the empty line in the output which is not a capital letter. Also, could you explain `^[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:~# 

```

Answer: 
An empty line *is* **zero** or more occurrences of a capital letter. The latter expression is ambiguous, starts and ends with **zero** or more occurrences of a capital letter, also known as "anything."

**Update**: Please refer to Tanzelax's answer as the answer that should have been accepted.
Zero or more occurrences can include zero occurrences.

Thus, `^[A-Z]*` includes just 'new line', which is every line.

`$` is end of line, so `^[A-Z]*$` means 'new line, followed by any number (including zero) of capital letters, followed by an end of line', which is only the blank lines (which are 'new line, zero capital letters, end of line').