对这个正则表达式感到困惑

时间:2010-10-30 02:58:03

标签: regex linux

好的,所以^[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:~# 

3 个答案:

答案 0 :(得分:2)

空行 或更多出现大写字母。后一个表达式是含糊不清,以开头和结尾或更多出现大写字母,也称为“任何东西”。

更新:请参考Tanzelax的答案,作为本应接受的答案。

答案 1 :(得分:1)

零次或多次出现可包括零次。

因此,^[A-Z]*只包含'新行',即每一行。

$是行尾,因此^[A-Z]*$表示'新行,后跟任意数字(包括零)的大写字母,后跟行尾',这只是空白行(这是'新行,零大写字母,行尾')。

答案 2 :(得分:1)

如果您询问在表达式末尾添加星号的内容是什么,则表示匹配0次或更多次。在您提供的表达式中,它意味着匹配尽可能多的连续大写字母。

http://www.regular-expressions.info/也可能对你有所帮助。