开发者_如何学GoOkay, 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:~#
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').
If you're asking what the addition of the asterisk to the end of the expression does, it means to match 0 or more times. In the expression that you provided it means to match as many consecutive capital letters as possible.
http://www.regular-expressions.info/ might also be of some help to you.
精彩评论